Sql-Server

限制使用者只複製備份

  • May 1, 2014

我希望在我的生產環境中部署日誌傳送。這意味著我將不得不管理備份鏈,這些備份鏈可能會因人們進行備份以刷新開發環境而中斷。如果我遇到故障並想使用日誌備份恢復到某個時間點,我還需要開發人員進行的備份。

如果開發人員僅使用 COPY ONLY 備份,則不會發生這種情況。所以我的問題是:有沒有辦法限制使用者只能執行 COPY ONLY 備份?

你不需要讓他們使用COPY_ONLY。只有一個中間人LOG BACKUPS會打破LSN. 您可以做的是明確DENY BACKUP LOG to [user|group]授予開發人員或開發人員組的權限。或者,只需創建一個角色並拒絕該角色的備份日誌。因此,該角色中的所有使用者都將繼承權限。

例如

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.

引用自:https://dba.stackexchange.com/questions/64295