SQL Server 中為何擁有db_owner權限的賬號刪除不掉數據庫


今天在公司的SQL Server服務器上,使用了一個只有public和dbcreator角色的賬號"user1"在SMSS中去刪除一個數據庫,但是死活報錯說沒有權限,報錯如下:

Delete backup history failed for server 'MYSERVER' (Microsoft.SqlServer.Smo)
Additional Information: The EXECUTE permission was denied on the object 'sp_delete_database_backuphistory'

很明顯這個錯誤是說我們登錄的SQL Server賬號沒有權限刪除數據庫,后來我換成了一個擁有sysadmin角色的賬號"user2"就可以刪除了。但是奇怪的是擁有public和dbcreator角色的賬號"user1"在要刪除的數據庫中是有db_owner權限的,按道理來說這種情況下應該是可以刪除該數據庫的啊。后來我又嘗試在賬號"user1"下不用SMSS的右鍵菜單按鈕刪除數據庫,用語句刪除,結果數據庫居然成功刪除了。。。語句如下:

USE [master]
DROP DATABASE DatabaseName

后來我才發現,原來在使用SMSS的右鍵菜單按鈕刪除數據庫時,有個checkbox是默認勾上的,如下圖所示:

這個"Delete Backup and restore history information for databases"需要數據庫的sysadmin角色才能使用,而我們用DROP DATABASE語句刪除數據庫的時候,相當於沒有勾選上面那個checkbox,所以使用賬號"user1"可以成功刪除數據庫。所以切記當使用非sysadmin角色的SQL Server賬號刪除數據庫的時候,一定不要選中上面截圖中的第一個checkbox,否者會報錯提示你權限不足被拒絕。

 


免責聲明!

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



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