Sql-Server
是否可以恢復僅具有數據庫角色成員資格的數據庫?
我有一個現有的數據庫,我想通過覆蓋現有數據庫從備份中恢復。
目前我有
db_owner db_backupoperator
角色
我認為這足以恢復數據庫。但是,當我嘗試時,我得到了錯誤
User does not have permission to RESTORE database 'XY'
這是否可以通過授予數據庫角色(而不授予伺服器角色和微調權限)來實現?
它不是。有關詳細參考,請參閱https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-ver15#permissions。
如果要恢復的數據庫不存在,則使用者必須具有 CREATE DATABASE 權限才能執行 RESTORE。如果數據庫存在,RESTORE 權限預設授予 sysadmin 和 dbcreator 固定伺服器角色的成員以及數據庫的所有者 (dbo)(對於 FROM DATABASE_SNAPSHOT 選項,數據庫始終存在)。
RESTORE 權限授予角色,其中成員資訊始終可供伺服器使用。因為只有在數據庫可訪問且未損壞時才能檢查固定數據庫角色成員身份,執行 RESTORE 時並非總是如此,所以 db_owner 固定數據庫角色的成員沒有 RESTORE 權限。