每次從服務器上備份好數據庫(Sql Server數據庫),如果將備份數據庫文件在本地恢復,總會產生用戶權限的問題。
經過很多次的實驗后,我發現有那么一條語句可以發揮作用,就是sp_change_users_login語句。
具體用法:
EXEC sp_change_users_login 'Update_One', '用戶名', '登錄名';
比如,原來在你本地數據庫中有一個用戶名是aa,這個數據庫是遠程數據庫在本地的備份,當然遠程數據庫中也有這個用戶名。每次在遠程備份后,再在本地恢復,那么本地機器上的aa這個用戶名就沒有讀寫這個數據庫的權限了,所以一定要執行一下這個語句就可以了。
====================================================================================
孤立帳戶,就是某個數據庫的帳戶只有用戶名而沒有登錄名,這樣的用戶在用戶庫的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','用戶名'
可以自動將用戶名所對應的同名登錄添加到syslogins中
用法 3 :
exec sp_change_users_login 'UPDATE_ONE','用戶名','登錄名'
將用戶名映射為指定的登錄名。
====================================================================================
