首先須要瞭解一下SQL Server登陸名和用戶名的卻別:數據庫
登陸名:服務器方的一個實體,使用一個登陸名只能進入服務器,可是不能讓用戶訪問服務器中的數據庫資源。每一個登陸名的定義存放在master數據庫的syslogins表中。
用戶名:一個或多個登陸對象在數據庫中的映射,能夠對用戶對象進行受權,以便爲登陸對象提供對數據庫的訪問權限。用戶定義信息存放在每一個數據庫的sysusers表中。
SQLSERVER把登陸名與用戶名的關係稱爲映射。用登陸名登陸SQLSERVER後,在訪問各個數據庫時,SQLSERVER會自動查詢此數據庫中是否存在與此登陸名關聯的用戶名,若存在就使用此用戶的權限訪問此數據庫。服務器
孤立賬戶,就是某個數據庫的賬戶只有用戶名而沒有登陸名,這樣的用戶在用戶庫的sysusers系統表中存在,而在master數據庫的syslogins中卻沒有對應的記錄。
孤立賬戶的產生通常是一下兩種:
1.將備份的數據庫在其它機器上還原;
2.重裝系統或SQL SERVER以後只還原了用戶庫對象
解決方法是使用sp_change_users_login來修復。
sp_change_users_login的用法有三種
用法1:
exec sp_change_users_login 'REPORT'
列出當前數據庫的孤立用戶
用法2:資源
exec sp_change_users_login 'AUTO_FIX','用戶名'ast
能夠自動將用戶名所對應的同名登陸添加到syslogins中test
或者登錄
sp_change_users_login 'Auto_Fix', 'test', NULL, 'testpassword'權限
來建立一個登陸名爲test,密碼爲testpassword的用戶與之對應。密碼
用法3:
exec sp_change_users_login 'UPDATE_ONE','用戶名','登陸名'
將用戶名映射爲指定的登陸名。方法
注:(用法2 和 用法3 的區別是:
用法2會自動根據用戶名建立登陸名,
用法3須要本身首先建立一個登陸名。)