孤立用户疑难解答(把数据库备份还原到另一个服务器时,可能会遇到孤立用户的问题。)

将一 db 备份恢复到另外的 server 上后,原来的 db 用户不能登录 sqlServer,发现数据库用户的 “登录名”没有了,在 安全管理那里从新建立登录名,可却不能将登录名与数据库用户关联起来,若要关联,就要从新建立数据库用户,可我的用户已经存在,该 db user 拥有很多对象,不能删除!
不会让我一个一个改变对象的所有者吧!
给个招吧!
下面是可能用到的存储过程
--
--help
exec sp_helpuser cvar
--change object owner
exec sp_changeobjectowner 'a.a' , 'dbo'
-- del user
exec sp_revokedbaccess 'a'
-- change db owner
EXEC sp_changedbowner 'dbo'
-- del login
exec sp_droplogin a
--add login
EXEC sp_addlogin a, a,a
-- grant user
EXEC sp_grantdbaccess 'a', 'a'
--set default db for user
exec sp_defaultdb cvar, a
---------------------------------------------------------------

第-种方法
use yourdatabase
exec sp_change_users_login 'Auto_Fix','youruser'

第二种方法
如果多次在两个服务器中备份/还原数据用可一劳永逸法。
以后在原来服务器备份,在新服务器恢复,login 就不会不见了。
原来数据库服务器以文本方式执行下面语句。
select sql='exec sp_addlogin '''+loginname+''',',CONVERT(VARBINARY(32), password),','''+dbname+''',NULL,',sid,',''skip_encryption''' from master.dbo.syslogins where loginname<>'sa' and isntname=0

将生成的结果在新的服务器执行。

第三种方法
1、use yourdatabase
2、将使用 sp_changeobjectowner 将对象的所有关系更改到另一用户(如果有)。
exec sp_changeobjectowner 'ouruser.table1','dbo'
3、exec sp_dropuser 'youruser'
4、加login youruser(如果没有)
5、加 user youruser。
6、授权。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus