web-dev-qa-db-ja.com

ユーザーをCOPY ONLYバックアップに制限する

実稼働環境でログ配布を展開したいと考えています。これは、開発環境を更新するためにバックアップを取る人によって中断される可能性があるバックアップチェーンを管理する必要があることを意味します。障害が発生し、ログバックアップを使用して特定の時点に復元したい場合は、開発者が作成したバックアップも必要です。

開発者がCOPY ONLYバックアップのみを使用した場合、これは起こりません。だから私の質問は:ユーザーをコピーのみのバックアップしか実行できないように制限する方法はありますか?

13
James Anderson

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.
12
Kin Shah

良い答えを見つけることができない良い質問ですが、ここにあります。すべてのユーザーをバックアップの役割から削除し、copy_onlyバックアップファイルを特定の場所にドロップする特定のユーザー用に、execute asコマンドを使用するタスクを作成した場合はどうなりますか?

2
ACDBA