次の方法で共有


高速データベース復旧の管理

適用対象: SQL Server 2019 (15.x) 以降のバージョン

この記事では、SQL Server 2019 (15.x) 以降のバージョンの Transact-SQL (T-SQL) で 高速データベース復旧 (ADR) を有効または無効にする方法と、ADR で使用される永続バージョン ストア (PVS) ファイル グループを変更する方法について説明します。

Note

Microsoft Fabric プレビューの Azure SQL Database、Azure SQL Managed Instance、および SQL データベースでは、高速データベース復旧 (ADR) が常に有効になります。 問題として、PVS によるストレージ使用率の高さや、ADR のクリーンアップの速度低下などが見られる場合は、「高速データベース復旧の監視とトラブルシューティング 」を参照するか、「Azure サポート 」に問い合わせてください。

データベース復旧の高速化を考慮すべきユーザー

多くのお客様は、高速データベース復旧 (ADR) は、データベースの復旧時間を短縮し、長いロールバックを回避するための貴重なテクノロジです。

データベース ワークロードで次のシナリオが頻繁に発生する場合は、ADR を利用できます。

  • 実行時間が長期の回避できないトランザクション。 たとえば、ADR は、実行時間の長いトランザクションがロールバックされるリスクがある場合に役立ちます。
  • トランザクションログが大幅に増加する原因となる活発なトランザクション。
  • データベースの可用性に影響を与える実行時間が長期にわたるデータベース復旧 (たとえば、予期しない SQL Server の再起動または手動トランザクションのロールバック後)。

アプリケーションが個々のトランザクションで大量の単一行の変更を使用している場合、ワークロードが ADR に最適でない可能性があります。 可能であれば複数行ステートメントで変更をバッチ処理することを検討し、大量の小さな DML トランザクションを回避してください。

Enable ADR

ADR は既定ではオフであり、SQL Server 2019 (15.x) 以降で使用できます。

ADR を有効にするには、次の Transact-SQL (T-SQL) コマンドを使用します。

ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;

ADR を有効または無効にするには、排他データベース ロックが必要です。 つまり、ALTER DATABASE コマンドは、すべてのアクティブなセッションがなくなるまでブロックされ、新しいセッションは ALTER DATABASE コマンドの後ろで待機することになります。 操作を完了してロックを解除することが重要な場合は、終了句 WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT] を使用して、データベース内のアクティブなセッションを中止できます。 詳細については、ALTER DATABASE SET オプションに関するページを参照してください。

tempdbで ADR を有効または無効にする場合、排他データベース ロックは必要なく、終了句を指定しないでください。 ただし、変更を有効にするには、データベース エンジンの再起動が必要です。

Disable ADR

ADR を無効にするには、次の T-SQL コマンドを使用します。

ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO

ADR が無効になった後でも、すべてのアクティブなトランザクションが完了するまでは、論理的に元に戻すためにシステムで必要なため、PVS にバージョンが格納されていることがあります。 tempdbで ADR を無効にする場合は、変更を有効にするためにデータベース エンジンの再起動が必要です。

PVS ファイル グループを変更する

既定では、永続バージョン ストア (PVS) データは PRIMARY ファイル グループにあります。 必要に応じて、PVS を別のファイル グループに移動できます。 たとえば、より多くの領域やより高速なストレージが必要になる場合があります。

PVS の場所を別のファイル グループに変更するには、次の手順に従います。

  1. PVS 用のファイル グループを作成し、このファイル グループに少なくとも 1 つのデータ ファイルを追加します。 For example:

    ALTER DATABASE [<db_name>] ADD FILEGROUP [VersionStoreFG];
    GO
    
    ALTER DATABASE [<db_name>]
    ADD FILE
    (
       NAME = N'VersionStoreFG',
       FILENAME = N'E:\DATA\VersionStore.ndf',
       SIZE = 8192 MB,
       FILEGROWTH = 64 MB
    )
    TO FILEGROUP [VersionStoreFG];
    
  2. 次の T-SQL コマンドを使用して ADR を無効にします。

    ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
    GO
    
  3. PVS に格納されているすべてのバージョンが削除されるまで待ちます。

    新しい PVS の場所を使用して ADR を有効にするには、まず、すべてのバージョン情報が以前の PVS の場所から消去されていることを確認します。 sys.sp_persistent_version_cleanup ストアド プロシージャを使用して、クリーンアップを強制的に実行できます。

    EXEC sys.sp_persistent_version_cleanup [<db_name>];
    

    sys.sp_persistent_version_cleanup ストアド プロシージャは同期型です。つまり、現行の PVS からすべてのバージョン情報が消去されるまで完了しません。 完了し、ADR が無効になっていると仮定すると、sys.dm_tran_persistent_version_store_stats のクエリを実行し、persistent_version_store_size_kbの値を調べることで、バージョン情報が削除されたことを確認できます。 For example:

    SELECT DB_NAME(database_id),
           persistent_version_store_size_kb
    FROM sys.dm_tran_persistent_version_store_stats
    WHERE database_id = [MyDatabaseID];
    

    persistent_version_store_size_kb の値が 0されたら、ADR を再度有効にして、新しいファイル グループに PVS を配置できます。

  4. ADR を有効にし、次の T-SQL コマンドを使用して新しい PVS の場所を指定します。

    ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON
    (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
    

Note

tempdbにファイル グループを追加できないため、では PVS を別のtempdbに移動することはできません。

PVS のサイズを監視する

データベースで ADR を有効にしたら、永続バージョン ストア (PVS) と PVS クリーンアップのパフォーマンスのサイズを監視します。 詳細については、「高速データベース復旧 監視とトラブルシューティング」を参照してください。