用戶、組或角色'XXX' 在當前數據庫中已存在. 錯誤:15023解決方法

 

解決SQL Server 2008 錯誤15023:當前數據庫中已存在用戶或角色,SQLServer2008,錯誤15023,

這個問題困擾了我很久了。以前的解決辦法是修改表的架構。非常麻煩。有了下面這個方法,就非常簡單了:只需要一條語句就解決了問題,並且非常優雅。

在使用SQL Server 2008時,我們經常會遇到一個情況:需要把一臺服務器上的數據庫轉移到另外一臺服務器上。而轉移完成後,需要給一個”登錄”關聯一個”用戶”時,往往會發生錯誤:

      “錯誤15023:當前數據庫中已存在用戶或角色”

        這個問題非常棘手,幾經排常找到了原因與解決方法,因爲這個問題與解決方法均比較複雜,所以把這個過程中的一些經驗紀錄下來與大家分享,希望能對大家以後的類似操作有所幫助。

        原因及解決辦法如下:

首先介紹一下sql server中“登錄”與“用戶”的區別,“登錄”用於用戶身份驗證,而數據庫“用戶”帳戶用於數據庫訪問和權限驗證。登錄通過安全識別符 (SID) 與用戶關聯。將數據庫恢復到其他服務器時,數據庫中包含一組用戶和權限,但可能沒有相應的登錄或者登錄所關聯的用戶可能不是相同的用戶。這種情況被稱爲存在“孤立用戶”。此時是不能通過新建登錄或者是對同名登錄授予對應數據庫的“用戶”權限來解決登錄問題,因爲SQL Server會報出“錯誤15023:當前數據庫中已存在用戶或角色”,爲了解決這個問題,解決方法如下:

1.用戶登陸問題處理

Use [表名]
go
sp_change_users_login 'update_one', [附加數據庫中的用戶], [創建的新登陸用戶]

ps:以上2個用戶需相同,update_one 是存儲過程的參數

 

2.用戶登陸後對數據庫操作授權處理

Use [表名]
go
EXEC sp_addsrvrolemember [登陸用戶], 'sysadmin';

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章