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

SQL Server 刪除擁有物件結構描述的使用者:「無法移除該使用者,因為它擁有物件」完整解決方案

     編輯:關於SqlServer

還原資料庫後嘗試刪除資料庫使用者,卻遇到錯誤訊息:「無法移除該使用者,因為它擁有物件」。這是因為使用者擁有結構描述,SQL Server 預設禁止直接刪除。本文提供兩種解決路徑:圖形介面修改系統目錄與 T-SQL 重新指派結構描述擁有權(推薦)。

現象重現

  • 還原備份資料庫至新環境。
  • 嘗試刪除資料庫使用者 → 錯誤:「無法移除該使用者,因為它擁有物件」。

方法一:SSMS 圖形介面直接修改系統目錄(不建議生產環境)

  1. SSMS 物件總管 → 右鍵伺服器 → 屬性 → 一般 → 勾選 允許直接修改系統目錄。
  2. 展開資料庫 → 系統資料表 → sysusers → 右鍵 開啟資料表 → 傳回所有資料列。
  3. 找到目標使用者列 → 右鍵 刪除 → 確認。
  4. 完成後務必取消勾選「允許直接修改系統目錄」 恢復保護。

伺服器屬性啟用系統目錄修改

一般頁面勾選允許修改

開啟 sysusers 系統資料表

刪除目標使用者列

方法二:T-SQL 重新指派結構描述擁有權再刪除(標準最佳實務)

-- 1. 查詢使用者擁有的結構描述
SELECT name FROM sys.schemas WHERE principal_id = USER_ID('目標使用者');

-- 2. 將結構描述擁有權轉移給 dbo
ALTER AUTHORIZATION ON SCHEMA::[結構描述名稱] TO dbo;
-- 若有多個結構描述,逐一執行

-- 3. 刪除資料庫使用者
DROP USER [目標使用者];

-- 4. 若登入帳號也需移除
DROP LOGIN [登入帳號];

核心觀念釐清

  • 登入帳號 屬伺服器層級,資料庫使用者 屬資料庫層級,兩者不同命。
  • 使用者若為結構描述擁有者,必須先轉移擁有權才能刪除。
  • 直接修改系統目錄 (allow updates) 風險極高,可能導致資料庫損毀,嚴禁用於生產環境。

掌握結構描述擁有權轉移技巧,即可安全、標準地清理遺留使用者帳號。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved