日期:2014-05-16  浏览次数:20456 次

SQL Server中数据库恢复后用户无法登录问题的解决
今天碰到一个问题,朋友把数据从产品库导到开发库上来,数据库用的是SQL Server,方法是在产品库上备份,然后到开发库上恢复,两边的数据库用户名密码都一样,可是恢复完后却不能登录,原因很简单,SQL Server是登录时把服务器的login映射到database的user,整个库备份恢复后,database的用户的名字虽然和以前一样,但实际的内部编码已经不同了,所以在开发库上登录时是映射不到恢复后的数据库里的用户去的,但是怎么解决最方便呢?

开始想把恢复后的数据库里的用户删掉重建,可是这个用户拥有很多表,删不了。

后来想把服务器的login删了重建,可是重建时提示在database里已经有同名用户,也不行。

最后找到一个还算简单的办法:
1、 打开允许更新系统表选项
   在企业管理器的服务器属性里,选择服务器设置标签,选中“允许对系统目录直接进行修改”

2、执行以下SQL语句,假设用户名是myuser,恢复的数据库是mydb

use master

DECLARE @SID varbinary(85)

SELECT @SID = sid FROM sysxlogins where [name]='myuser'

update mydb.dbo.sysusers set sid=@sid where name='myuser'