Sql-Server
如何強制從我的數據庫中刪除使用者?
我正在對我們的開發數據庫進行乾淨備份,以便輕鬆地重新啟動數據庫。該數據庫有大約 200 個測試使用者,應該刪除以使其真正乾淨,但問題是我無法刪除其中任何一個。
當我執行如下命令時:
DROP USER [MyGarbageUser]
它提示我以下錯誤:
消息 15284,級別 16,狀態 1,第 5 行 數據庫主體已授予或拒絕對數據庫中的對象的權限,無法刪除。
這些使用者既不擁有該數據庫中的任何對象(據我所知)也不應該擁有。在網上搜尋了很多之後,我仍然無法找到解決方案。
如何強制從該數據庫中刪除 MyGarbageUser?
您嘗試刪除的使用者似乎扮演了授予者的角色,因此您需要在執行刪除使用者之前撤銷這些訪問權限。
嘗試執行以下命令首先獲取受讓人的詳細資訊:
select permission_name, state_desc, object_name(major_id) as securable, user_name(grantor_principal_id) as grantor from sys.database_permissions where grantee_principal_id = user_id('User Name to be dropped')
接下來將使用以下方法查找有關設保人的詳細資訊:
select * from sys.database_permissions where grantor_principal_id = user_id ('User Name to be dropped');
根據您從上述查詢中獲得的結果,您需要執行以下操作之一:
REVOKE VIEW DEFINITION ON USER::User Name to be dropped TO public REVOKE CONTROL ON USER::User Name to be dropped TO public REVOKE ALTER ON USER::User Name to be dropped TO public REVOKE ALTER ON USER::User Name to be dropped TO *grantee* REVOKE CONTROL ON USER::User Name to be dropped TO *grantee* REVOKE VIEW DEFINITION ON USER::User Name to be dropped TO *grantee*
這只是一種可能性,可能有其他類型的訪問權限已被授予。因此,您需要檢查相同的內容並相應地執行撤銷。
您可以從以下論壇中找到更多此類範例:
以上希望有所幫助。