1. 程式人生 > >SQLServer 報錯:使用者、組或角色'XXX' 在當前資料庫中已存在. 錯誤:15023解決方法

SQLServer 報錯:使用者、組或角色'XXX' 在當前資料庫中已存在. 錯誤:15023解決方法

SQLServer 報錯:使用者、組或角色'XXX' 在當前資料庫中已存在. 錯誤:15023解決方法

pizibaidu關注0人評論3332人閱讀2016-09-08 11:31:57

背景: 最近在遷移SQLServer資料庫2008時,新建使用者後,做使用者對映時。 SQLServer 報錯:使用者、組或角色'XXX' 在當前資料庫中已存在. 錯誤:15023.

下面講一下解決的方法。

QQ圖片20160908093002

 

分析:    
將資料庫恢復到其他伺服器時,資料庫中包含一組使用者和許可權,但可能沒有相應的登入或者登入所關聯的使用者可能不是相同的使用者。    
這種情況被稱為存在“孤立使用者”。此時是不能通過新建登入或者是對同名登入授予對應資料庫的“使用者”許可權來解決登入問題,    
因為SQLServer會報出“錯誤15023:當前資料庫中已存在使用者或角色”,

 

簡單理解

資料庫備份檔案中已經包含了使用者test,現在還原了資料庫,然後發現現有資料庫中沒有test這個使用者,想要新建一個test使用者,作為該資料庫的owner,便會出現這個問題。

可以理解為登入名和使用者是兩個不同的概念,雖然名稱相同。在新建登入名的時候,如果不新增該資料庫對映則不會報錯。新增資料庫對映相當於給該資料庫新增一個同名使用者。

但是已經存在了test這個使用者了,所以此時會報錯。

 

解決方法

可以通過以下方法解決該問題。

1.新建一個test登入名,但是不要新增資料庫對映。

2.使用指令碼,將孤立使用者test關聯到登入名test上:

Use [資料庫名]

go

sp_change_users_login 'update_one', 'test', 'test'