2012年10月01日
Tweet
SQL Server でトランザクションログを取得しています。5分ごとに。
まだノウハウの蓄積段階なので色々試行錯誤しています。
まだ復元のテストしてないので今度やります・・。
トランザクションログを普通に取るときのコマンドだと、 TO DISK コマンドで直接ファイル名を指定するので、例えば日付ごとにローテーションしたり、それ以外の方法で分割するには工夫が必要になります。
調べてみたら、T-SQL を使うと、ファイル名に日時を入れることが可能になるようです。ということで以下を参考に。
SQL Server 2008 のバックアップでファイル名へ日付/時刻を入れる方法
-------------------------------
DECLARE @d datetime = GETDATE()
DECLARE @d1 char(10) = REPLACE( CONVERT(char(10), @d, 111), '/', '-' )
DECLARE @d2 char(6) = REPLACE( CONVERT(char(8), @d, 108), ':', '' )
DECLARE @fName varchar(30) = '[BK-PATH]' + @d1 + @d2 + '.trn'
BACKUP LOG [DBNAME] TO DISK = @fName WITH NOFORMAT, NOINIT, NAME = N'DBNAME-トランザクション ログ バックアップ', SKIP, COMPRESSION
GO
-------------------------------
これで、[BK-PATH] に、以下のようなファイルが作成されます。
2012-09-01130500.trn
※ 2012-09-01 13:05:00 に作成されたトランザクションファイル
しばらく様子を見たいと思います。

まだノウハウの蓄積段階なので色々試行錯誤しています。
まだ復元のテストしてないので今度やります・・。
トランザクションログを普通に取るときのコマンドだと、 TO DISK コマンドで直接ファイル名を指定するので、例えば日付ごとにローテーションしたり、それ以外の方法で分割するには工夫が必要になります。
調べてみたら、T-SQL を使うと、ファイル名に日時を入れることが可能になるようです。ということで以下を参考に。
SQL Server 2008 のバックアップでファイル名へ日付/時刻を入れる方法
-------------------------------
DECLARE @d datetime = GETDATE()
DECLARE @d1 char(10) = REPLACE( CONVERT(char(10), @d, 111), '/', '-' )
DECLARE @d2 char(6) = REPLACE( CONVERT(char(8), @d, 108), ':', '' )
DECLARE @fName varchar(30) = '[BK-PATH]' + @d1 + @d2 + '.trn'
BACKUP LOG [DBNAME] TO DISK = @fName WITH NOFORMAT, NOINIT, NAME = N'DBNAME-トランザクション ログ バックアップ', SKIP, COMPRESSION
GO
-------------------------------
これで、[BK-PATH] に、以下のようなファイルが作成されます。
2012-09-01130500.trn
※ 2012-09-01 13:05:00 に作成されたトランザクションファイル
しばらく様子を見たいと思います。