SQL Server 孤立使用者詳解

2021-09-07 22:14:04 字數 1257 閱讀 3170

sql server 的使用者安全管理分兩層,整個sql server 伺服器一層,每個資料庫一層。

登入帳號對於伺服器而言的,資料庫使用者是針對特定資料庫來講的。就相當於乙個房間裡放著很多保險櫃,你有房門鑰匙了,必須得有每個保險櫃的鑰匙才能從保險櫃裡取東西。登入帳戶是房門鑰匙,資料庫使用者是保險櫃鑰匙。

如上述所述「登陸賬戶」和「資料庫賬戶」之間存在一層對映,如果資料庫「a」中有賬戶「cms」,但沒有「登陸賬戶」與其對應,那麼「cms」賬戶就無法連線sql server服務,因此它就沒有任何作用,便成立乙個孤立的使用者。

第乙個伺服器的情況:

在第乙個伺服器中備份資料a,並在第二個伺服器中還原該資料庫,那麼第二個伺服器的情況:

此時在第二個伺服器的資料庫a中便產生了孤立賬戶cms,在第二個伺服器中執行下述語句也可看到孤立賬戶cms:

use a

exec sp_change_users_login 'report'

如果直接建立登陸賬戶「cms」,並制定其「資料庫訪問」為資料庫a,會提示「使用者**已存在」,如下圖:

解決孤立賬戶實質上就是建立乙個「登陸賬戶」,並關聯「登陸賬戶」和「資料庫賬戶」。

建立乙個登陸賬戶(一般與孤立賬戶同名,即「cms」),先不設定該「登陸賬戶」的資料庫訪問和資料角色,並設定該「登陸賬戶」的密碼(一般也與孤立賬戶相同),然後連線「登陸賬戶」和「資料庫賬戶」。

use a

exec sp_change_users_login 'update_one', 'cms', 'cms'

這樣在執行「exec sp_change_users_login 'report'」就不會看到孤立賬戶「cms」了。

sp_change_users_login的語法

exec sp_change_users_login 'update_one', '登陸賬戶名', '資料庫賬戶名'
注意:「登陸賬戶」的賬戶名和密碼都可以和「孤立賬戶」不同,應用程式的資料庫配置應當為「登陸賬戶」的賬戶名和密碼,而不是「資料庫賬戶」。

假設資料a中存在孤立賬戶cms,其密碼為「123456」,應用程式的資料庫配置也是此。為了能夠使得應用程式能夠正常使用,可以做如下操作:

這種方法僅僅是建立了乙個類似於sa的cms使用者,雖能夠保障應用程式正常使用,但並不能解決孤立使用者。

SQL SERVER 孤立使用者

sql server使用者管理分為兩層,例項級的login和資料庫級的使用者 login的sid和資料庫使用者的sid必須一樣才行 資料庫搬遷login在重建時生成新的sid,與原來資料庫的使用者sid對應不上所以就成了孤立使用者 每個login有唯一的sid,域賬號為域裡的sid select f...

SQL Server 孤立使用者檢測與處理

sql server 登入名使用對映到 sql server 登入名的資料庫使用者訪問各個資料庫。此規則有兩種例外情況 有關 sql server 登入名與資料庫使用者的對映關係的資訊儲存在資料庫中。其中包括資料庫使用者的名稱以及對應 sql server 登入名的 sid。該資料庫使用者的許可權用...

Sql Server 孤立使用者解決辦法

sql server 孤立使用者 是我們經常遇到的事情,今天詳細的梳理了下,希望能幫到你 當把使用者資料庫從一台 sql server 使用備份和恢復的方式遷移到另一台伺服器。資料庫恢復以後,原先使用者定義的一些其他資料庫使用者,就無法在新伺服器上繼續使用了。尤其對一些sql ser 帳號,這些就是...