33 GBのトランザクションログを持つデータベースがあります。これは、データベースが完全復旧モードになっていて、最初のバックアップの前に5年以上使用されていたことが原因です。
次のコマンドでログファイルを切り詰めて縮小したい
Backup log dbname with truncate_only
go
DBCC shrinkfile('logicalfilename',100)
上記のコマンドを実行した後、将来、完全バックアップ1と2の間の時点に復元できますか?
タイムライン
おかげで、
将来の完全バックアップ1と2の間の時点に復元できますか?
はい。あなたが心配しているのはLog Chainです。ログチェーンは完全バックアップから始まります。したがって、future full backup 1
新しいログチェーンを開始し、トランザクションログバックアップを使用して、特定の時点に復元できます。
トランザクションログバックアップの使用に関するBOLリファレンス
ログを切り捨てる最初の方法については、 BOL on BACKUP の次の点に注意してください。
BACKUP LOG WITH NO_LOG
およびWITH TRUNCATE_ONLY
オプションは廃止されました。完全または一括ログ復旧モデルの復旧を使用していて、データベースからログバックアップチェーンを削除する必要がある場合は、単純復旧モデルに切り替えます。
そして、これは言うまでもないことだと思いますが、私は明示的にします。これと同じ問題が発生しないようにするには、定期的なトランザクションログのバックアップを実行する必要があります。
ここでの主な問題は、定期的なログバックアップを行っていないように見えることです。私が最初に行うことは、 SQL Serverの復旧モデル を確実に理解することです。主に、FULL
およびBULKLOGGED
のデータベースでは、定期的なログバックアップを行う必要があります。
ログファイルをクリーンアップするには、まずログバックアップを作成することをお勧めします。
BACKUP LOG foo TO DISK='<backup file location>'
これが完了したら、DBCC SHRINKFILE
コマンドを安全に実行して、ログファイルのサイズを適切に変更できます。
最後に、データベースの定期的なログバックアップをスケジュールする必要があります。 メンテナンスプラン または Ola Hallengrenのメンテナンススクリプト のいずれかを使用して、これを実行する多くのツールがあります。また、 Thomas StringerのBOLへのリンク を読んで理解することを強くお勧めします。
私はSQLバックアップを理解するだけで、非常によく似た質問がありました。
特定の時点に復元するには、次のものが必要です。
あなたが走るとき
Backup log dbname with truncate_only
ログをバックアップするのではなく、ログを消去します。したがって、実行できる唯一の復元は、完全(または差分)バックアップからの復元です。
Mike Falの回答 はトランザクションログのバックアップを設定する方法を示しています Thomasの回答 はログチェーンを説明していますが、復元するために必要なものを正確に投稿する必要があると感じました先週同じ質問があり、ポイントインタイムリストアを実行するために正確に何が必要かについて非常に混乱していました。