BUG:在企业管理器中没有显示 DBO 用户

文章翻译 文章翻译
文章编号: 305711 - 查看本文应用于的产品
本文的发布号曾为 CHS305711
错误号:355065 (SHILOH_BUGS)
展开全部 | 关闭全部

本文内容

症状

企业管理器的"用户"文件夹中未列出用户数据库中的数据库所有者 (dbo) 用户。此外,当您查看企业管理器"登录"文件夹中的任何登录帐户的属性时,可能会出现以下错误信息:
Error 21776:[SQL-DMO] The name 'dbo' was not found in the Users collection.If the name is a qualified name, use [] to separate various parts of the name, and try again.
只有在服务器上应用了 SQL Server 2000 Service Pack 1 (SP1) 后,才会出现此问题。在 Service Pack 1 之前,dbo 用户显示空登录名。

原因

企业管理器错误地筛选掉所有没有匹配登录名的用户,而 dbo 用户没有匹配的登录名。 出现这种现象的两个可能的原因是:
  • 如果数据库是由 Microsoft Windows NT 验证的登录帐户创建的,而该登录帐户对运行 SQL Server 的计算机的访问权限是通过组成员身份(例如,BUILTIN\Administrators)继承的,那么存储在该数据库的 sysusers 系统表中的安全标识号 (SID) 在 syslogins 系统表中就没有匹配的 SID。

  • 如果数据库被恢复到 dbo 用户在 sysusers 系统表中的 SID 与 syslogins 系统表中的 SID 不匹配的计算机上。

替代方法

若要解决此问题,可以使用以下两种方法之一:
  • 如果 dbo 用户没有显示登录帐户,可将数据库所有者更改为具有显示登录帐户的用户。例如,将数据库所有者更改为系统管理员 (sa),然后执行以下代码:
    exec sp_changedbowner 'sa'
  • 如果 dbo 用户具有显示登录帐户,但该用户在 sysusers 系统表中的 SID与该登录帐户在 syslogins 系统表中的 SID 不匹配(可能是由于数据库恢复造成的),可使用 sp_change_users_login 存储过程恢复 SID 映射。

状态

Microsoft 已经证实 SQL Server 2000 Service Pack 1 (SP1) 中存在此问题。

更多信息

若要确定用户数据库中的 dbo 用户是否不匹配,请执行以下查询:

Use <User_Database>

GO

SELECT u.name AS "Name", ISNULL(l.name, 'dbo is unmatched') AS "Matched Login"

FROM sysusers u

LEFT JOIN master.dbo.syslogins l ON u.sid = l.sid

WHERE u.name = 'dbo'

GO

参考

有关更多信息,请单击以下文章编号,查看相应的 Microsoft 知识库文章:
218172PRB:Cannot Change SA Password in Enterprise Manager(无法在企业管理器中更改 SA 密码)
274188PRB:"Troubleshooting Orphaned Users" Topic in Books Online is Incomplete(联机图书中的"孤立用户疑难解答"主题不完整)
168001PRB:User Logon and/or Permission Errors After Restoring Dump(在恢复转储后出现用户登录名和/或权限错误)
246133INF:Transfer Logins and Passwords Between SQL Server 7.0 and SQL Server 2000(在 SQL Server 7.0 和 SQL Server 2000 之间传递登录名和密码)
298758PRB:Using the Auto_Fix Option with sp_change_users_login Can Leave Security Vulnerabilities(使用 Auto_Fix 选项及 sp_change_users_login 可能会产生安全隐患)

属性

文章编号: 305711 - 最后修改: 2003年11月12日 - 修订: 2.1
这篇文章中的信息适用于:
  • Microsoft SQL Server 2000 标准版
关键字:?
kbbug kbpending kbsqlserv2000bug KB305711
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com