SQL Server 備份還原形成孤立用戶的問題

首先須要瞭解一下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須要本身首先建立一個登陸名。)

相關文章
相關標籤/搜索