Answers:
您不需要让他们使用COPY_ONLY
。只有中级LOG BACKUPS
才能打破僵局LSN
。您可以做的是明确DENY BACKUP LOG to [user|group]
授予开发人员或开发人员组特权。或者,只需创建一个ROLE并拒绝该角色的备份日志即可。因此,该角色中的所有用户都将继承权限。
例如
USE test_kin
GO
CREATE ROLE [deny_log_backups]
GO
USE [test_kin]
GO
CREATE USER [Kin] FOR LOGIN [Kin]
GO
ALTER USER [Kin] WITH DEFAULT_SCHEMA=[dbo]
GO
use test_kin
GO
DENY BACKUP LOG TO [deny_log_backups]
GO
USE test_kin
GO
EXEC sp_addrolemember N'deny_log_backups', N'kin'
GO
现在测试一下:
backup database [test_kin]
to disk = 'C:\crap_test\kin_test_full.bak'
with compression, stats =10, init
---- ### success for FULL BACKUP
backup log [test_kin]
to disk = 'C:\crap_test\kin_test_log.log'
--- $$$ ERROR MESSAGE
Msg 262, Level 14, State 1, Line 3
BACKUP LOG permission denied in database 'test_kin'.
Msg 3013, Level 16, State 1, Line 3
BACKUP LOG is terminating abnormally.
您可能能够做的是1)拒绝对此类用户的备份(日志和/或完整),但仍然2)允许他们启动执行特定数据库的仅副本备份的工作(在已授予帐户的情况下运行)备份权限)。我有这样一个解决方案,可以将PROD自动化为PRO-PROD数据库自动还原以进行调查;特定用户可以访问作业(在PRE-PROD中),该作业在PROD中执行仅复制备份,将文件从PROD移至PRE-PROD,然后在PRE-PROD服务器上还原移动的备份。因此,确保此类用户没有办法破坏PROD上的备份逻辑。
(在调查问题时,开发人员可能会通过将文件实际从源移动到测试服务器,而又不知道他们破坏了备份逻辑,因此很想在测试服务器上进行完整备份以将其还原到测试服务器上。因此,我同意强制进行复制-仅备份很重要。)