SQL Server のトランザクション ログの切り捨てとログ ファイルの縮小

Acronis Backup & Recovery 11.5 は、ディスク バックアップ作成後、トランザクション ログを切り捨てません。Microsoft SQL Server のネイティブ バックアップ エンジンまたはトランザクション ログを自動的に管理するその他のサードパーティ バックアップ ソリューションを使用しない場合、次の方法でログを管理できます。

SQL Server Management Studio を使用するログの切り捨て

データベースをシンプル復旧モデルに切り替えると、トランザクション ログは自動的に切り捨てられます。

  1. データベースをシンプル復旧モデルに切り替えるには、次の手順を実行します。
    1. Microsoft SQL Server Management Studio を実行して、インスタンスに接続します。
    2. データベースを右クリックして、[プロパティ] をクリックします。[データベースのプロパティ] ダイアログ ボックスが開きます。
    3. [ページの選択] ペインで、[オプション] をクリックします。
    4. [復旧モデル] リスト ボックスで、[シンプル] モデル リストを選択します。
  2. トランザクション ログ ファイルが、自動的に切り捨てられます。
  3. 手順 1 と同じ方法で、データベースを完全または一括ログ復旧モデルに切り替えます。
ログの切り捨てと縮小の自動化

上記の切り捨て処理は、スクリプトを使用して自動化でき、(オプションで)ログ ファイルの縮小を追加できます。スクリプトをバックアップ後に実行するコマンドに追加した場合、ログはバックアップ後直ちに切り捨てられ、縮小されます。この方法は、ユーザーに Transact-SQL スクリプトを作成するスキルがあり、sqlcmd ユーティリティをよく理解していることを前提にしています。

Transact-SQL および sqlcmd の詳細については、次の記事を参照してください。

1 つの SQL インスタンスのトランザクション ログの切り捨てとログ ファイルの縮小を自動化するには、次の手順を実行します。

  1. 次のテンプレートを使用して、インスタンスのデータベースのログ ファイルを切り捨ておよび縮小するスクリプトを作成します。

    USE database_name
    ALTER DATABASE database_name SET RECOVERY SIMPLE;
    DBCC SHRINKFILE(logfile_name);
    ALTER DATABASE database_name SET RECOVERY FULL;

    最後の文字列で、SET RECOVERY 値は、特定のデータベースの最初の復旧モデルにより異なり、FULL または BULK_LOGGED になる可能性があります。

    2 つのデータベースがあるインスタンスの例(TestDB1 および TestDB2):

    USE TestDB1;
    ALTER DATABASE TestDB1 SET RECOVERY SIMPLE;
    DBCC SHRINKFILE(TestDB1_log);
    ALTER DATABASE TestDB1 SET RECOVERY FULL;

    USE TestDB2;
    ALTER DATABASE TestDB2 SET RECOVERY SIMPLE;
    DBCC SHRINKFILE(TestDB2_log);
    ALTER DATABASE TestDB2 SET RECOVERY BULK_LOGGED;

  2. 次の [sqlcmd] コマンドをバックアップ後に実行するコマンドに追加します。

    sqlcmd -S myServer\instanceName -i C:\myScript.sql

    ここで、

複数の SQL インスタンスのトランザクション ログの切り捨てとログ ファイルの縮小を自動化するには、次の手順を実行します。

コンピュータに複数のインスタンスがあり、上記の処理をそれらのインスタンスに適用する場合、次の手順に従います。

  1. 各インスタンスに別々のスクリプト ファイルを作成します(例: C:\script1.sql および C:\script2.sql)。
  2. 対応するインスタンス用のコマンドを含むバッチ ファイルを作成します(例: C:\truncate.bat)。

    sqlcmd -S myServer\instance1 -i C:\script1.sql
    sqlcmd -S myServer\instance2 -i C:\script2.sql

  3. バックアップ後に実行するコマンドで、バッチ ファイルへのパスを指定します。