首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

解決 SQL Server 錯誤 21002:[SQL-DMO] 使用者已存在 - 孤立使用者修復指南

     編輯:關於SqlServer

錯誤現象

在資料庫屬性 → 權限 → 為登入使用者勾選角色時,報錯:錯誤 21002: [SQL-DMO] 使用者 *** 已存在。常發生於備份還原至不同伺服器後。

根因

還原保留原資料庫使用者 SID,但新伺服器登入 SID 不同,產生孤立使用者 (Orphaned User):資料庫內有使用者,但無對應伺服器登入。

修復步驟 (SSMS 圖形化)

  1. 展開資料庫 → 「使用者」 → 右鍵問題使用者 → 「刪除」
  2. 「安全性」→「登入」→ 右鍵對應登入 → 「屬性」→「使用者對應」→ 勾選目標資料庫 → 勾選 public、db_owner → 確定

若刪除使用者失敗:「選定的使用者擁有物件,無法移除」

  1. 先將物件擁有權轉移:ALTER AUTHORIZATION ON OBJECT::[schema].[object] TO [new_owner];
  2. 或腳本產生物件定義 → 刪除使用者 → 重建物件
  3. 參考:「SQL Server 提示『選定的使用者擁有物件,所以無法除去該使用者』」
  4. T-SQL 替代方案

    -- 修復孤立使用者 (自動對應同名登入)
    EXEC sp_change_users_login 'Auto_Fix', '使用者名稱', NULL, '密碼';
    
    -- 或手動對應
    EXEC sp_change_users_login 'Update_One', '使用者名稱', '登入名稱';
    
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved