天天看點

mssql孤立使用者的解決方法

'當您将資料庫備份恢複到另一台伺服器時,可能會遇到孤立使用者的問題。以下情形說明了該問題并闡述如何加以解決。 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'

這樣,就将伺服器登入“test”與 Northwind 資料庫使用者“test”重新連接配接起來。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 角色的成員可以更改其他使用者的登入密碼。

-------------------------------------------------------------

回顧:

我當時心急如梵,真沒辦法了嗎?隻有查資料,問朋友,反正亂使點子,最後找到了一篇,再借助wryd的幫助下,終于解決了.

我們的操作是這樣的(借助上面的資料),

用查詢分析器,遠端登入使用者權限為sa,轉到相關的資料庫下,如shengtao.net,執行這個語句:

sp_change_users_login 'update_one', 'shengtao.net', 'shengtao.net'

我想這個以後,可能還要修正.等以後遇到問題,再說吧~~~~