Microsoft SQLServer, 錯誤 : 15023,用戶、組或角色'XXX'在當(dāng)前數(shù)據(jù)庫中已存在如何解決
為一個數(shù)據(jù)庫添加一個用戶或者映射數(shù)據(jù)庫時,提示以下錯誤信息:
用戶、組或角色 ***** 在當(dāng)前數(shù)據(jù)庫中已存在。 (Microsoft SQLServer, 錯誤 : 15023)
問題原因:在還原數(shù)據(jù)庫的過程中,在其它sql server服務(wù)器上進行還原之后,會出現(xiàn)一個在原服務(wù)器上可以正常的用戶在目標(biāo)服務(wù)器上出現(xiàn)無法登錄的使用。
解決方法:
當(dāng)數(shù)據(jù)庫恢復(fù)到其他服務(wù)器時,原數(shù)據(jù)庫中包含一組用戶和權(quán)限,但可能沒有相應(yīng)的登錄或者登錄所關(guān)聯(lián)的用戶可能不是相同的用戶。這種情況可能會出現(xiàn)上面的問題。該問題是無法通過新建登錄或者是對同名登錄授予對應(yīng)數(shù)據(jù)庫的“用戶”權(quán)限來解決登錄問題。由于SQLServer會提示“錯誤15023:當(dāng)前數(shù)據(jù)庫中已存在用戶或角色”,要解決這個問題,需要調(diào)用系統(tǒng)存儲過程sp_change_users_login,具體用法如下:
1.打開SQL Server Management Studio, 右鍵選擇“數(shù)據(jù)庫”>“新建查詢”
輸入以下sql腳本:
Use 數(shù)據(jù)庫名
go
sp_change_users_login update_one, XXX, XXX
接著執(zhí)行腳本即可。
注:其中update_one是存儲過程的參數(shù),表示只處理一個用戶,前一個XXX是“用戶”,后一個XXX是“登錄”,以上這個SQL表示將服務(wù)器登錄“XXX”與數(shù)據(jù)庫用戶“XXX”重新關(guān)聯(lián)。