資料庫遷移至新伺服器後,還原備份檔,需重建登入並對應資料庫使用者。在 SSMS 建立登入時勾選 User Mapping,因資料庫內已存在同名使用者,報錯:
User, group, or role 'testuser' already exists in the current database. (Error 15023)
先刪除資料庫內同名使用者,再建立登入並授權。缺點:需重新設定權限、角色成員資格、預設結構描述等。
USE TargetDB;
GO
EXEC sp_change_users_login 'Update_One', 'db_username', 'login_name';
GO
db_username:資料庫內現有的使用者名稱。login_name:剛建立的伺服器登入名稱。USE TargetDB;
GO
EXEC sp_change_users_login 'Report'; -- 列出所有孤立使用者
-- 或使用 'Auto_Fix' 自動建立登入並對應(需密碼)
EXEC sp_change_users_login 'Auto_Fix', 'username', NULL, 'StrongPassword';
參考來源:SQL Server Forums - How to assign a login to an existing user?