解決SQL Server數據庫的"User, group, or role already exists in the current database"問題


問題場景

在SQL Server數據庫遷移時,在另外一台服務器上恢復數據庫備份文件之后,需要重新創建之前數據庫上的用戶帳戶。在創建登錄用戶時,需要在User Mapping中給該用戶針對具體的數據庫進行授權,由於恢復出來的數據庫中存在同名的用戶帳戶,創建時會出現"User, group, or role already exists in the current database"的錯誤提示。詳細錯誤信息如下:

TITLE: Microsoft SQL Server Management Studio
------------------------------
Create failed for User 'testuser'.  (Microsoft.SqlServer.Smo)
------------------------------
ADDITIONAL INFORMATION:
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
User, group, or role 'testuser' already exists in the current database. (Microsoft SQL Server, Error: 15023)

之前的解決方法

在創建用戶帳戶(或者授權)之前,先在對應的數據庫中刪除該同名的用戶帳戶。

最新的解決方法

先創建用戶帳戶,不進行授權,然后通過下面的SQL語句將該用戶帳戶關聯至對應的數據庫用戶。優點是避免了重新授權的操作。

USE {目標數據庫}
EXEC sp_change_users_login 'Update_One', '{目標數據庫已存在的用戶名}', '{創建的登錄用戶名}'

方法來源

SQL Server Forums - How to assign a login to an existing user?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM