web-dev-qa-db-ja.com

SQL Serverでの連続するバックアップごとに.bakファイルのサイズが増加/倍増するのはなぜですか?

SQL Server 2012 Expressで単純なDBを実行しています。

ちょうど今日、データベースをバックアップすると、.bakファイルサイズは、直前のバックアップから数分前の2倍になります。今日、いくつかのバックアップを実行しました(SQL Server Management Studio->バックアップの種類:完全)。それぞれに.bakファイルは倍増し続けます。

SQL Server Mgmt Studioで、DBを右クリックすると、[レポート]-> [バックアップと復元のイベント]-> [成功したバックアップ操作]が展開されます。

ここのレポートは、最新のバックアップサイズが55MBとして記録されたことを示していますが、実際の.bakファイルは260MBです。今日の他の各バックアップも55MBのサイズとして記録され、対応する.bakファイルは数倍大きくなります(バックアップ操作ごとに増大します)。

何がうまくいかないのでしょうか?これが始まって以来、データベースに変更を加えていません。

9
full_prog_full

各バックアップで「初期化」または「フォーマット」されていないため、バックアップファイルにはデータベースの複数のコピーが含まれています。

[データベースのバックアップ]ダイアログボックスの[オプション]タブに移動し、[既存のすべてのバックアップセットを上書きする]を選択します。

enter image description here

12
Max Vernon

毎回同じファイルにバックアップしていると思います。バックアップを実行するときに、INITまたはNOINITへのオプションがあります。 NOINIT(デフォルト)は、ファイルに追加のバックアップを追加するように指示します。

BOLごと:

{NOINIT | INIT}

バックアップ操作で、バックアップメディア上の既存のバックアップセットに追加するか上書きするかを制御します。デフォルトでは、メディア上の最新のバックアップセットに追加します(NOINIT)。

したがって、55MBのバックアップを実行するたびに、ファイルのサイズが55MB大きくなります。

バックアップコマンドにINIT句を含めると、既存のバックアップが毎回上書きされます。

もちろん、他のオプションは、毎回新しいファイルにバックアップを実行し、古いファイルをクリーンアップすることです。これは、現在のバックアップの1つが不良である場合、または履歴に回復する必要がある場合に適しています。

8
Kenneth Fisher

SQL Server Management Studioウィザードを使用せずにSQLで直接実行している場合。バックアップ時に「NOINT」または「INIT」を指定して、ファイルへの追加または上書きをそれぞれ指定する必要があります。

ここにSQLがあります

BACKUP DATABASE <data_base_name> TO DISK = <File_Path> WITH INIT
1