SQL Server数据库,备份文件在另一台机算机上还原后,发现在企业管理器中表现为dbo的登录帐号为空,经过查找发现是dbo被孤立,dbo 用户具有显示登录帐户,但该用户在 sysusers 系统表中的 SID与该登录帐户在 syslogins 系统表中的 SID 不匹配。

可以用以下查看dbo的sid是否孤立:

1恢复被孤立的数据库dboSELECT u.name AS "Name", ISNULL(l.name, 'dbo is unmatched'AS "Matched Login"
2恢复被孤立的数据库dbo
3恢复被孤立的数据库dboFROM sysusers u
4恢复被孤立的数据库dbo
5恢复被孤立的数据库dboLEFT JOIN master.dbo.syslogins l ON u.sid = l.sid
6恢复被孤立的数据库dbo
7恢复被孤立的数据库dboWHERE u.name = 'dbo'
8恢复被孤立的数据库dbo
9恢复被孤立的数据库dbo

出现此问题的原因在这篇KB文章中有说明:http://support.microsoft.com/kb/305711/zh-cn

但是当我使用上面KB中的方法:

1恢复被孤立的数据库dboEXEC sp_change_users_login 'Update_One''dbo''NT AUTHORITY\SYSTEM'

提示:将终止此过程。对于此过程中的登录名参数,'dbo' 是禁止使用的值。恢复被孤立的数据库dbo

马上查看msdn,才知道sp_change_users是禁止更改dbo,guest 或 INFORMATION_SCHEMA用户的
那怎么办呢?自己手动更新dbo的SID吧。过程如下:

恢复被孤立的数据库dbouse master
恢复被孤立的数据库dbo
select * from syslogins

找出要设定的用户的SID

然后使用以下语句更新

 1恢复被孤立的数据库dboSP_CONFIGURE 'allow updates',1 
 2恢复被孤立的数据库dboRECONFIGURE WITH OVERRIDE
 3恢复被孤立的数据库dboGO
 4恢复被孤立的数据库dbo
 5恢复被孤立的数据库dboUPDATE sysusers SET sid=SID信息 WHERE NAME='dbo'
 6恢复被孤立的数据库dboGo
 7恢复被孤立的数据库dbo
 8恢复被孤立的数据库dbosp_configure 'allow updates'0 
 9恢复被孤立的数据库dboreconfigure with override
10恢复被孤立的数据库dboGo 
11恢复被孤立的数据库dbo
12恢复被孤立的数据库dbo

搞定,呵呵。

相关文章:

  • 2021-10-27
  • 2021-05-04
  • 2021-12-09
  • 2021-06-22
  • 2021-12-11
  • 2021-11-26
  • 2021-09-19
猜你喜欢
  • 2021-06-28
  • 2021-09-12
  • 2021-07-23
  • 2021-09-26
  • 2022-02-21
  • 2021-04-17
  • 2021-07-09
相关资源
相似解决方案