sql server中的孤立用户

   此问题出现在数据库的移值上。移值后,数据库的登陆名和数据库用户名孤立,原数据中,用建立的用户名密码登陆可以访问数据库,但是移值后就不能访问了。而且如果您尝试向该登录帐户授予数据库访问权限,则会因该用户已经存在而出现以下错误信息:     ‘该登录已经在另一个用户名下拥有帐户’。

   产生错误的原因是:
            在您向目标服务器传输登录帐户和密码后,您的用户可能还无法访问数据库。登录帐户与用户是靠安全识别符   (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 '

一般问题就会解决。
            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 '

一般问题就会解决了。

猜你喜欢

转载自www.cnblogs.com/gered/p/9213496.html