PRB:線上叢書的疑難排解孤兒使用者主題不完整

文章翻譯 文章翻譯
文章編號: 274188 - 檢視此文章適用的產品。
本文曾發行於 CHT274188
BUG #: 58200 (SQLBUG_70)
BUG #: 235230 (SHILOH)
全部展開 | 全部摺疊

在此頁中

徵狀

當您將資料庫備份還原到另一台伺服器上時,可能會遇到孤兒使用者的問題。 《SQL Server 線上叢書》中的 〈疑難排解孤兒使用者〉 主題並未列出排解這個問題的確實步驟。

本文說明如何排解孤兒使用者的問題。

狀況說明

Microsoft 已確認本篇文件開頭所列產品確實有上述問題。

其他相關資訊

雖然登入和使用者這兩個詞彙經常混用,但它們的意思其實非常不同。登入是用來進行 使用者驗證,而資料庫使用者帳戶則用於資料庫存取和使用權限驗證。登入與使用者之間 會以安全識別碼 (SID) 來建立關聯。要存取 SQL Server 伺服器則需要使用登入。驗證特定 登入是否有效的程序稱為「驗證」,而這個登入必須與某一 SQL Server 資料庫使用者相關。 您使用使用者帳戶來控制在資料庫中執行的活動,如果某特定登入在資料庫中沒有使用者帳戶, 則使用該登入的使用者便無法存取該資料庫,就算該使用者可以連接到該 SQL Server 伺服器, 也是如此。這種情況的唯一例外是當資料庫包含「guest」使用者帳戶時,沒有相關使用者帳戶 的登入,會被對應到 guest 使用者;相反地,如果有資料庫使用者,但沒有相關的登入,則使用者 也無法登入 SQL Server 伺服器。

當資料庫還原到不同的伺服器上時,它會包含一組使用者和使用權限,但可能沒有任何相關的 登入或登入可能不是與同樣的使用者相關。這種情況被稱之為製造了「孤兒使用者」。

孤兒使用者疑難排解

將資料庫備份還原到另一個伺服器上時,可能會遭遇孤兒使用者的問題。下列情況 說明了這個問題,並顯示該如何加以解決。
  1. 在主要資料庫中新增一個登入,並將預設資料庫指定為 Northwind:
    Use master go sp_addlogin 'test', 'password', 'Northwind'
  2. 將存取權授與您剛建立的使用者:
    Use Northwind go sp_grantdbaccess 'test'
  3. 將資料庫備份。
    BACKUP DATABASE Northwind
    TO DISK = 'C:\MSSQL\BACKUP\Northwind.bak'
  4. 將資料庫還原到不同的 SQL Server 伺服器上:
    RESTORE DATABASE Northwind
    FROM DISK = 'C:\MSSQL\BACKUP\Northwind.bak'
    還原的資料庫包含名為「test」的使用者,但沒有相對應的登入, 導致「test」成為孤兒。
  5. 現在,請執行下列程式碼來偵測孤兒使用者:
    Use Northwind go sp_change_users_login 'report'
    輸出會列出所有的登入,顯示在 Northwind 資料庫 sysusers 系統資料表和主要資料庫 sysxlogins 系統資料表的項目之間,有不相符的狀況。

解決孤兒使用者的步驟:

  1. 請為前述步驟所產生的孤兒使用者執行下列命令:
    Use Northwind
    go
    sp_change_users_login 'update_one', 'test', 'test'
    這會重新連結伺服器的 登入 「測試」與 Northwind 資料庫的 使用者 「測試」。 sp_change_users_login 預存程序也可用 auto_fix 參數來執行所有孤兒使用者的更新作業, 但我們並不建議這麼做,因為 SQL Server 會以名稱來比對登入和使用者。 這種做法在大多數的情況下會奏效,不過,如果與使用者相關聯的登入 是錯誤的,則使用者可能會有錯誤的使用權限。
  2. 在執行過前述步驟中的程式碼後,使用者便可存取資料庫。稍後 使用者便可用 sp_password 預存程序來變更密碼:
    Use master 
    go
    sp_password NULL, 'ok', 'test'
    這個預存程序不能用於 Microsoft Windows NT 安全性帳戶。透過其 Windows NT 網路帳戶連結到 SQL Server 伺服器的使用者,會由 Windows NT 來驗證;因此 它們的密碼只能由 Windows NT 來變更。

    只有 sysadmin 角色的成員可以變更另一個使用者登入的密碼。

?考

如需如何在伺服器之間移動資料庫時解決使用權限問題的詳細資訊, 請按一下下面的文件編號,檢視「Microsoft 知識庫」中的下列文件:
240872 INF:如何解決在 SQL Server 之間移動資料庫的權限問題
本文件是根據 Microsoft Knowledge Base 文件編號 Q274188 翻譯的。若要參考原始英文文件內容,請至以下網址:

http://support.microsoft.com/support/kb/articles/Q274/1/88.asp

屬性

文章編號: 274188 - 上次校閱: 2004年3月11日 - 版次: 2.1
這篇文章中的資訊適用於:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
關鍵字:?
kbcodesnippet kbpending kbprb KB274188
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