如何解决孤立用户问题
此问题出现在数据库的移值上。移值后,数据库的登陆名和数据库用户名孤立,原数据中,用建立的用户名密码登陆可以访问数据库,但是移值后就不能访问了。而且如果您尝试向该登录帐户授予数据库访问权限,则会因该用户已经存在而出现以下错误信息: ‘该登录已经在另一个用户名下拥有帐户’。
产生错误的原因是:
在您向目标服务器传输登录帐户和密码后,您的用户可能还无法访问数据库。登录帐户与用户是靠安全识别符 (SID) 关联在一起的;在您移动数据库后,如果 SID 不一致,SQL Server 可能会拒绝用户访问数据库。此问题称为孤立用户。如果您使用 SQL Server 2000 DTS 传输登录功能来传输登录帐户和密码,就可能会产生孤立用户。此外,被允许访问与源服务器处于不同域中的目标服务器的集成登录帐户,也会导致出现孤立用户。
以下是解决办法:
1.查找孤立用户。在目标服务器上打开查询分析器,然后在您移动的用户数据库中运行以下代码: exec sp_change_users_login 'Report' , 查找到后执行
2.如果一个用户是孤立用户,数据库用户可以成功登录到服务器,但却无权访问数据库。如果您尝试向该登录帐户授予数据库访问权限,则会因该用户已经存在而出现以下错误信息:
产生错误的原因是:
在您向目标服务器传输登录帐户和密码后,您的用户可能还无法访问数据库。登录帐户与用户是靠安全识别符 (SID) 关联在一起的;在您移动数据库后,如果 SID 不一致,SQL Server 可能会拒绝用户访问数据库。此问题称为孤立用户。如果您使用 SQL Server 2000 DTS 传输登录功能来传输登录帐户和密码,就可能会产生孤立用户。此外,被允许访问与源服务器处于不同域中的目标服务器的集成登录帐户,也会导致出现孤立用户。
以下是解决办法:
1.查找孤立用户。在目标服务器上打开查询分析器,然后在您移动的用户数据库中运行以下代码: exec sp_change_users_login 'Report' , 查找到后执行
Use
lk96160
go
sp_change_users_login ' update_one ' , ' lk96160 ' , ' lk96160 '
一般问题就会解决。go
sp_change_users_login ' update_one ' , ' lk96160 ' , ' lk96160 '
2.如果一个用户是孤立用户,数据库用户可以成功登录到服务器,但却无权访问数据库。如果您尝试向该登录帐户授予数据库访问权限,则会因该用户已经存在而出现以下错误信息:
Microsoft SQL - DMO (ODBC SQLState: 42000 ) Error 15023 : User or role ' %s ' already exists in the current database .
或是登陆名对应该的用户改成了dbo,则在sa下执行一下以下代码:
exec sp_changedbowner ' sa '
然后再执行:
Use
lk96160
go
sp_change_users_login ' update_one ' , ' lk96160 ' , ' lk96160 '
一般问题就会解决了。
go
sp_change_users_login ' update_one ' , ' lk96160 ' , ' lk96160 '
posted on 2007-07-31 14:49 freebird 阅读(722) 评论(2) 编辑 收藏 所属分类: 数据库
评论
# re: 如何解决孤立用户问题 回复 更多评论
老大:我按你说的方法解决我这个问题,在执行
EXEC sp_change_users_login 'update_one', 'bh3c_f', 'bh3c_f'
时,报错:
服务器: 消息 15063,级别 16,状态 1,过程 sp_change_users_login,行 104
该登录已经在另一个用户名下拥有帐户。
请老大指教!
我的msn: wd3w@163.com
# re: 如何解决孤立用户问题 [未登录] 回复 更多评论
@wd3w服务器: 消息 15063,级别 16,状态 1,过程 sp_change_users_login,行 104
该登录已经在另一个用户名下拥有帐户。
出现这个错误的问题,文章里面也有了:
先执行一下这个:
exec sp_changedbowner ' sa '
然后再执行
Use lk96160
go
sp_change_users_login ' update_one ' , ' lk96160 ' , ' lk96160 '
应该就没问题了