PRB:還原傾印之後發生使用者登入及 (或) 權限錯誤

文章翻譯 文章翻譯
文章編號: 168001 - 檢視此文章適用的產品。
本文曾發行於 CHT168001
全部展開 | 全部摺疊

徵狀

如果 SQL Server 使用者資料庫的傾印還原至不同的 SQL Server (例如熱備份伺服器) 或還原至重建或重新載入舊版 Master 資料庫後的相同 SQL Server,則資料庫中的使用者登入和權限可能不正確。

這個問題可以多種方法自我顯現:
  • 在登入 6.x 伺服器時,使用者可能會收到下列錯誤:
    Msg 4002, Level 14, State 1, Server Microsoft SQL Server, Line 0
    登入失敗
    資料程式庫:登入錯誤。
  • 在登入 7.0 伺服器時,使用者可能收到下列錯誤:
    Msg 18456, Level 14, State 1,
    使用者‘%ls’ 的登入失敗。
  • 在嘗試存取資料庫中的物件時,使用者可能收到下列錯誤:
    Msg 229, Level 14, State 1
    拒絕在物件 %.*s、資料庫 %.*s、擁有者 %.*s 使用 %s 權限
  • 在嘗試建立登入和同意存取已還原的資料庫時,或新增使用者至資料庫時,可能收到下列錯誤:
    Microsoft SQL-DMO (ODBC SQLState:42000} 錯誤 15023:使用者或角色 '%s' 在目前的資料庫中已經存在。
  • 使用者對物件可能具有先前所沒有的權限。

發生的原因

使用者登入資訊儲存在 Master 資料庫的 syslogins 資料表中。藉由變更伺服器,或藉由重建或還原舊版的 Master 資料庫來改變這個資訊,這個資訊可能不同於建立使用者資料庫傾印時的資訊。如果使用者的登入不存在,在嘗試登入伺服器時就會收到指出「登入失敗」的錯誤。如果使用者登入存在,但使用者資料庫中 master..syslogins 和 sysusers 資料表的 SUID 值 (針對 6.x) 或 SID 值 (針對 7.0) 不同,則使用者可能具有不同於使用者資料庫中所期望的權限。

其他可行方案

若要解決這個問題,請執行下列任何動作:
  • 如果目前的指令碼可用來新增登入、使用者和權限,請放棄後由指令碼重新建立。 如需有關使用指令碼在伺服器之間傳送登入的範例,請參閱下面的 Microsoft Knowledge Base 文件:
    246133 INF:在 SQL 7.0 與 SQL Server 2000 之間傳送登入和密碼
    240872 如何解決在 SQL Server 之間移動資料庫的權限問題
  • 如需有關使用指令碼在伺服器之間傳送登入的範例,請參閱下面的 Microsoft Knowledge Base 文件: 您可以使用 sp_change_users_login 預存程序來重新關聯 syslogins、sysusers 和 sysalternates 資料表之間的關係。不過,此程序對連結有最佳評估,可能允許使用者擁有超乎預期的存取權限。使用 [報表] 選項執行此程序會先產生將被改變的使用者清單。之後,您應該檢查以確定受影響的使用者具有適當的權限。而且要注意到 sp_change_users_login 程序無法修正衍生自登入和使用者的權限問題,這些登入和使用者以不同順序建立於還原備份的資料庫中。
  • 如需有關使用指令碼在伺服器之間傳送登入的範例,請參閱下面的 Microsoft Knowledge Base 文件: 在載入使用者資料庫之前,還原從使用者資料庫傾印到伺服器時的 Master 資料庫傾印。如此可確保使用者資料庫中的所有使用者資訊都完全符合 Master 中 syslogins 資料表的資訊。

    警告:Master 資料庫包含泛伺服器資訊,會影響伺服器上的所有資料庫。藉由還原 Master 資料庫,您可能會遇到已經遺失或具有錯誤權限的其他使用者 ID 及 (或) 資料庫。備份之後對 Master 所做的任何變更都會遺失。當您確定 Master 資料庫的備份版本包含有問題之使用者資料庫及伺服器上其他所有資料庫的正確資訊時,才使用這種方法。
  • 如需有關使用指令碼在伺服器之間傳送登入的範例,請參閱下面的 Microsoft Knowledge Base 文件: 使用 Transfer Manager (針對 6.x) 或 DTS (針對 7.0) 來複製登入。請注意,使用這種方法並不會傳送密碼。
  • 如需有關使用指令碼在伺服器之間傳送登入的範例,請參閱下面的 Microsoft Knowledge Base 文件: 請聯絡您的主要支援提供者。

?考

本文件是根據 Microsoft Knowledge Base 文件編號 Q168001 翻譯的。若要參考原始英文文件內容,請至以下網址:

http://support.microsoft.com/support/kb/articles/Q168/0/01.asp

屬性

文章編號: 168001 - 上次校閱: 2004年1月21日 - 版次: 2.1
這篇文章中的資訊適用於:
  • Microsoft SQL Server 6.0 Standard Edition
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
關鍵字:?
kbprb kbusage KB168001
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