用戶、組或角色 在當前數據庫中已存在

SQL Server把一臺服務器上的數據庫轉移到另外一臺服務器上。而轉移完成後,需要給一個"登錄"關聯一個"用戶"時,發生錯誤:“錯誤15023:當前數據庫中已存在用戶或角色”或“用戶、組或角色 在當前數據庫中已存在”
原因及解決辦法:
sql server中登錄用戶名與數據庫用戶用戶名的區別。登錄用戶名用於用戶身份驗證,而數據庫用戶用戶名用於數據庫訪問和權限驗證。
登錄通過安全識別符 (SID) 與用戶關聯。將數據庫恢復到其他服務器時,數據庫中包含一組用戶和權限,但可能沒有相應的登錄或者登錄所關聯的用戶可能不是相同的用戶。這種情況被稱爲存在“孤立用戶”。
此時是不能通過新建登錄或者是對同名登錄授予對應數據庫的“用戶”權限來解決登錄問題,因爲SQL Server會報出“錯誤15023:當前數據庫中已存在用戶或角色”,爲了解決這個問題,需要調用系統存儲過程sp_change_users_login,具體用法如下:
Use 數據庫名
go
sp_change_users_login 'update_one', '用戶名', '用戶名'
其中數據庫名爲存在孤立用戶的數據庫,update_one是存儲過程的參數,表示只處理一個用戶,前一個用戶名是數據庫用戶,後一個用戶名是用來數據庫登錄,以上這個SQL命令表示將數據庫用戶用戶名與服務器登錄用戶名重新連接起來。這樣就可以正常使用數據庫了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章