BUG:Enterprise Manager 中未顯示 DBO 使用者

本文曾發行於 CHT305711
本文已封存。本文係以「現狀」提供且不會再更新。
BUG #: 355065 (SHILOH_BUGS)
徵狀
某個使用者資料庫中的資料庫擁有者 (dbo) 使用者未列於 Enterprise Manager 的 [使用者] 資料夾內。此外,當您檢視 Enterprise Manager [登入] 資料夾中任何登入的內容時,會出現 [SQL-DMO] 21776 的錯誤訊息:
"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"(「dbo」名稱未在使用者集合物件中。如果這個名稱是合格名稱,請使用 [ ] 來分隔名稱的不同部分,然後再試一次)
這個問題只有在您替伺服器套用 SQL Server 2000 Service Pack 1 (SP1) 之後才會發生,dbo使用者顯示出來的是空白的登入名稱。
發生的原因
Enterprise Manager 誤將沒有相符登入的所有使用者篩選掉,而dbo使用者正巧沒有相符的登入。這個問題的兩個可能原因是:
  • 資料庫是由一個通過 Microsoft Windows NT 驗證的登入所建立,且此登入具有群組成員的權限 (如 BUILTIN\Administrators) 可以存取執行 SQL Server 的電腦,儲存在該資料庫的sysusers系統資料表的安全識別碼在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>GOSELECT 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.sidWHERE u.name = 'dbo'GO

參考



如需詳細資訊,請按一下下面的文件編號,檢視 Microsoft Knowledge Base 中的下列文件:
218172 PRB: Cannot Change SA Password in Enterprise Manager
274188 PRB: "Troubleshooting Orphaned Users" Topic in Books Online is Incomplete
168001 PRB: User Logon and/or Permission Errors After Restoring Dump
246133 INF: Transfer Logins and Passwords Between SQL Server 7.0 and SQL Server 2000
298758 PRB: Using the Auto_Fix Option with sp_change_users_login Can Leave Security Vulnerabilities
参考
本文件是根據 Microsoft Knowledgebase 文件編號 Q305711 翻譯的. 若要參考原始英文文件內容, 請至以下網址:

error dmo sqldmo sem sysusers syslogins
內容

文章識別碼:305711 - 最後檢閱時間:12/06/2015 04:46:39 - 修訂: 2.1

Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbbug kbpending kbsqlserv2000bug KB305711
意見反應