我正在尝试创建一组权限,其中 SQL 登录名可以创建所有数据库的备份,但只能恢复 TEST 数据库上的备份。应使用另一个登录名来恢复到 LIVE(位于同一 SQL 服务器上)。
这里它指出:
如果数据库存在,则 RESTORE 权限默认授予 sysadmin 和 dbcreator 固定服务器角色的成员以及数据库的所有者 (dbo)
基于此,我尝试让登录成为 TEST 数据库的所有者,并拥有 db_owner db 权限,但没有 sysadmin 服务器角色。在 LIVE 数据库上,登录具有:db_accessadmin、db_backupoperator、db_datareader、db_denydatawriter、db_securityadmin(没有所有权)。
但恢复仍然不起作用。如果我尝试执行恢复,我无法查看 .bak 文件中的备份集。我认为对话框正在后台执行 RESTORE HEADERONLY;如果我运行,RESTORE HEADERONLY FROM DISK = 'D:\Path\backup.bak'
我会得到CREATE DATABASE permission denied in database 'master'
。我可以使用 sysadmin 角色正常查看备份集。
没有系统管理员的话这可能吗?
答案1
对于所有那些对我的问题大喊大叫的 DBA,我想我可以让你们不再痛苦:
我认为解决这个问题的正确方法是创建一个第二个命名实例SQL 服务器,这样实时数据库和测试数据库之间就有了额外的隔离。然后,您可以为每个实例设置所需的任何权限。
看来您需要具有 sysadmin 或 dbcreator 服务器角色和RESTORE 的 db_owner 数据库角色