トランザクション ログをバックアップする

適用対象:SQL Server

この記事では、SQL Server Management Studio、Azure Data Studio、Transact-SQL、または PowerShell を使用して、SQL Server のトランザクション ログをバックアップする方法について説明します。

制限事項

BACKUP ステートメントは、明示的なトランザクションまたは暗黙のトランザクションでは使用できません。 明示的なトランザクションとは、トランザクションの開始と終了を明示的に定義したものです。

master システム データベースのトランザクション ログ バックアップはサポートされていません。

推奨事項

データベースで完全または一括ログ復旧モデルを使用している場合は、データを保護し、トランザクション ログがいっぱいになるのを防ぐために、十分な頻度で定期的にトランザクション ログをバックアップする必要があります。 これによってログが切り捨てられ、特定の時点へのデータベースの復元がサポートされます。

既定では、バックアップ操作が成功するたびに、 SQL Server エラー ログおよびシステム イベント ログにエントリが 1 つ追加されます。 ログを頻繁にバックアップすると、これらの成功メッセージがすぐに蓄積され、エラー ログが大きくなり、他のメッセージを探すのが困難になります。 そのような場合、これらのエントリに依存するスクリプトがなければ、トレース フラグ 3226 を使用することによってこれらのログ エントリを除外できます。トレース フラグ( Transact-SQL )を参照してください。

アクセス許可

必要な BACKUP DATABASE および BACKUP LOG アクセス許可は、既定では、sysadmin 固定サーバー ロール、db_owner 固定データベース ロール、および db_backupoperator 固定データベース ロールのメンバーに与えられます。 始める前に、適切なアクセス許可があることを確認してください。

バックアップ デバイスの物理ファイルに対する所有と許可の問題によって、バックアップ操作が妨げられることがあります。 SQL Server では、デバイスに対して読み書きを実行できる必要があります。 SQL Server サービスが実行されているアカウントには書き込み権限が必要です。 ただし、システム テーブルにバックアップ デバイスのエントリを追加する sp_addumpdevice では、ファイルのアクセス許可がチェックされません。 バックアップ デバイスの物理ファイルに対するアクセス許可の問題は、バックアップや復元で物理リソースへのアクセスを試みるまで、表面化しません。 そのため、始める前にアクセス許可を確認してください。

SQL Server Management Studio を使用します

Note

また、このセクションの手順は、Azure Data Studio にも適用されます。

  1. オブジェクト エクスプローラーで SQL Server データベース エンジンの適切なインスタンスに接続した後、サーバー名を選択してサーバー ツリーを展開します。

  2. [データベース]を展開します。さらに、そのデータベースに応じて、ユーザー データベースを選択するか、または [システム データベース] を展開してシステム データベースを選択します。

  3. データベースを右クリックし、[タスク]をポイントして、[バックアップ]を選択します。 [データベースのバックアップ] ダイアログ ボックスが表示されます。

  4. [データベース] ボックスに、適切なデータベース名が表示されていることを確認します。 必要に応じて、このボックスの一覧から別のデータベースを選択することもできます。

  5. 復旧モデルが [FULL] または [BULK_LOGGED]であることを確認します。

  6. [バックアップの種類] ボックスの一覧で、 [トランザクション ログ]を選択します。

  7. (省略可能)[バックアップのみコピーする] を選択して、コピーのみのバックアップを作成します。 コピーのみのバックアップは、従来のSQL Serverバックアップのシーケンスとは独立したSQL Serverバックアップです。「コピーのみのバックアップ (SQL Server)」を参照してください。

    Note

    [差分] オプションが選択されている場合、コピーのみのバックアップは作成できません。

  8. [名前] ボックスに表示された既定のバックアップ セット名をそのまま使用するか、または別のバックアップ セット名を入力します。

  9. (省略可能)[説明] テキスト ボックスに、バックアップ セットの説明を入力します。

  10. バックアップ セットの有効期限を指定します:

    • バックアップ セットが指定の日数後に期限切れになるようにするには、 [期間指定] (既定のオプション) を選択し、セットを作成してからセットが期限切れになるまでの日数を入力します。 0 ~ 99,999 日の値を指定できます。0 日を指定すると、バックアップ セットの有効期限は無期限になります。

      既定値は、 [サーバーのプロパティ] ダイアログ ボックス ( [データベースの設定] ページ) の[バックアップ メディアの既定の保有期間 (日)] オプションで設定されています。 このダイアログ ボックスを開くには、オブジェクト エクスプローラーでサーバー名を右クリックし、[プロパティ] をクリックして、 [データベースの設定] ページを選択します。

    • バックアップ セットが特定の日付に期限切れになるようにするには、 [日時指定]を選択し、セットの有効期限が切れる日付を入力します。

  11. [ディスク][URL] 、または [テープ] を選択して、バックアップ先を選択します。 1 つのメディア セットを含んでいる最大 64 個のディスク ドライブまたはテープ ドライブのパスを選択するには、 [追加]を選択します。 選択したパスは、 [バックアップ先] ボックスの一覧に表示されます。

    バックアップ先を削除するには、バックアップ先を選択して [削除] を選択します。 バックアップ先の内容を表示するには、バックアップ先を選択して [内容] を選択します。

  12. 詳細設定オプションを表示または選択するには、 [ページの選択] ペインの [オプション] を選択します。

  13. 以下のいずれかを選択して、メディアの上書きオプションを選択します:

    • [既存のメディア セットにバックアップする]

      このオプションでは、[既存のバックアップ セットに追加する] または [既存のすべてのバックアップ セットを上書きする] を選択します。「メディア セット、メディア ファミリ、およびバックアップ セット (SQL Server)」を参照してください。

      • (省略可能)[メディア セット名とバックアップ セットの有効期限を確認する] チェック ボックスをオンにします。これにより、バックアップ操作で、メディア セットとバックアップ セットの有効期限が切れる日付と時刻の確認が行われます。

      • (省略可能)[メディア セット名] テキスト ボックスに名前を入力します。 名前を指定しないと、メディア セットは空白の名前で作成されます。 メディア セット名を指定した場合は、メディア (テープまたはディスク) の実際の名前がここで入力した名前と一致しているかどうかが確認されます。

      メディア名を指定せずに、このチェック ボックスをオンにしてこのメディアを確認するよう指定した場合は、実際のメディア名も空でないとエラーになります。

    • [新しいメディア セットにバックアップし、すべての既存のバックアップ セットを消去する]

      このオプションでは、[新しいメディア セット名] テキスト ボックスに名前を入力し、必要に応じて [新しいメディア セットの説明] テキスト ボックスにメディア セットの説明を入力します。「メディア セット、メディア ファミリ、およびバックアップ セット( SQL Server )」を参照してください。

  14. [信頼性] セクションで、必要に応じて次の項目をオンにします:

  15. [トランザクション ログ] セクションで、次の手順を実行します。

    • 定期的なログ バックアップの場合は、既定の選択肢の [アクティブでないエントリを削除してトランザクション ログを切り捨てる]のままにします。

    • ログの末尾 (アクティブなログ) をバックアップするには、[ログの末尾をバックアップし、データベースを復元中の状態にしておく] をオンにします。

      ログ末尾のバックアップは、作業内容が消失しないようにログの末尾をバックアップするために、エラー後に実行されます。 アクティブなログのバックアップ (ログ末尾のバックアップ) は、エラーの後とデータベースの復元開始前の両方か、またはセカンダリ データベースへのフェールオーバー時に行われます。 このオプションを選択すると、Transact-SQL の BACKUP LOG ステートメントで NORECOVERY オプションを指定した場合と同じ結果になります。

      ログ末尾のバックアップの詳細については、「ログ末尾のバックアップ (SQL Server)」を参照してください。

  16. [全般] ページの [バックアップ先] セクションで、テープ ドライブにバックアップするように指定した場合は、 [バックアップ後にテープをアンロードする] チェック ボックスがアクティブになります。 このオプションを選択すると、[アンロードの前にテープを巻き戻す] オプションがアクティブになります。

  17. 既定では、バックアップが圧縮されるかどうかは、[バックアップ圧縮の既定] のサーバー構成オプションの値によって決まります。 ただし、現在のサーバー レベルの既定の設定にかかわらず、 [バックアップを圧縮する] をオンにしてバックアップを圧縮することも、 [バックアップを圧縮しない] をオンにして圧縮しないようにすることもできます。

    バックアップ圧縮 は、SQL Server 2008 (10.0.x) Enterprise 以降のバージョンおよび Service Pack 1 以降のバージョンの SQL Server 2016 (13.x) Standard でサポートされています。

    現在の既定のバックアップ圧縮を確認する方法については、「既定のバックアップ圧縮のサーバー構成オプションを表示または構成する」を参照してください。

    バックアップ ファイルを暗号化するには、 [バックアップ ファイルを暗号化する] チェック ボックスをオンにします。 バックアップ ファイルの暗号化に使用する暗号化アルゴリズムを選択し、証明書または非対称キーを指定します。 暗号化に使用できるアルゴリズムは次のとおりです。

    • AES 128
    • AES 192
    • AES 256
    • Triple DES

Transact-SQL の使用

BACKUP LOG ステートメントを実行して、トランザクション ログをバックアップし、以下の情報を提供します。

  • バックアップするトランザクション ログが属しているデータベースの名前。
  • トランザクション ログのバックアップが書き込まれるバックアップ デバイス。

重要

この例では、単純復旧モデルを使用する AdventureWorks2022 データベースを使用しています。 ただし、ログ バックアップを可能にするために、データベースの完全バックアップを行う前に、データベースが完全復旧モデルを使用するように設定されています。

詳細については、「データベースの復旧モデルの表示または変更 (SQL Server)」を参照してください。

この例では、 AdventureWorks2022 データベースのトランザクション ログ バックアップを、以前作成した名前付きバックアップ デバイスである MyAdvWorks_FullRM_log1に作成します。

BACKUP LOG AdventureWorks2022
   TO MyAdvWorks_FullRM_log1;
GO

PowerShell の使用

SQL Server PowerShell プロバイダーを設定して使用します。 Backup-SqlDatabase コマンドレットを使用して -BackupAction パラメーターの値の ログ を指定します。

次の例では、 <myDatabase> データベースのログのバックアップを、サーバー インスタンス Computer\Instanceの既定のバックアップ場所に作成します。

Backup-SqlDatabase -ServerInstance Computer\Instance -Database <myDatabase> -BackupAction Log