sys.sp_persistent_version_クリーンup (Transact-SQL)

適用対象: SQL Server 2019 (15.x) Azure SQL DatabaseAzure SQL Managed Instance

高速データベース復旧 (ADR) の重要な要素である永続バージョン ストア (PVS) クリーンup プロセスを手動で開始します。 このクリーンは、中止されたトランザクションから PVS 内のコミットされていないデータをロールバックします。

通常、PVS クリーンup プロセスを手動sys.sp_persistent_version_cleanupで開始する必要はありません。 ただし、一部のシナリオでは、ビジー状態の OLTP アクティビティ後の既知の休止/回復期間に、PVS クリーンup プロセスを手動で開始することが必要な場合があります。

Azure SQL の ADR の詳細については、「Azure SQL での高速データベース復旧」を参照してください。

Transact-SQL 構文表記規則

構文

sp_persistent_version_cleanup
    [ [ @dbname = ] N'dbname' ]
    [ , [ @scanallpages = ] scanallpages ]
    [ , [ @clean_option = ] clean_option ]
[ ; ]

引数

[ @dbname = ] N'dbname'

省略可能。 クリーンするデータベースの名前。 指定しない場合は、現在のデータベース コンテキストを使用します。 @dbnameは sysname で、既定値は NULL.

[ @scanallpages = ] scanallpages

省略可能。 @scanallpagesはビットで、既定値は 0. このオプションを設定1すると、バージョン管理されていない場合でも、すべてのデータベース ページのクリーンが強制的にアップします。

[ @clean_option = ] クリーン_option

省略可能。 使用可能なオプションは、行外 PVS ページを再利用するかどうかを決定します。 @クリーン_option は int で、既定値は 0. このリファレンスは一般的には必要ありません。既定値 0 をお勧めします。

Value 内容
0 既定値、オプションが指定されていない
1 個々の PVS ページの内容をチェックしない行外バージョン ストア
2 各 PVS ページがアクセスされた行以外のバージョン ストア
3 行内バージョン ストアのみ
4 内部使用のみ

リターン コードの値

0 (成功) または 1 (失敗)。

結果セット

なし。

アクセス許可

実行するには ALTER DATABA Standard Edition アクセス許可が必要です。

解説

ストアド プロシージャはsys.sp_persistent_version_cleanup同期的です。つまり、すべてのバージョン情報が現在の PVS からクリーンされるまで完了しません。

SQL Server 2019 (15.x) では、PVS クリーンup プロセスは一度に 1 つのデータベースに対してのみ実行されます。 Azure SQL Database と Azure SQL Managed Instance では、SQL Server 2022 (16.x) 以降では、PVS クリーンup プロセスは、同じインスタンス内の複数のデータベースに対して並列で実行できます。

PVS クリーンup プロセスが既に目的のデータベースに対して実行されている場合、このストアド プロシージャはブロックされ、完了するまで待機してから、別の PVS クリーンアップ プロセスを開始します。 ADR が有効になっているデータベースで実行時間の長いアクティブなトランザクションでも、PVS のクリーンをブロックできます。 バージョン クリーンer タスクを監視するには、次のサンプル クエリを使用してそのプロセスを探します。

SELECT *
FROM sys.dm_exec_requests
WHERE command LIKE '%PERSISTED_VERSION_CLEANER%';

制限事項

ADR が有効になっているデータベース、または永続化されたバージョン ストア (PVS) にバージョンが残っているデータベースには、データベース ミラーリングを設定できません。 ADR が無効になっている場合は、PVS 内の以前のバージョンを引き続きクリーンするために実行sys.sp_persistent_version_cleanupします。

ワークロード間またはメインテナント 期間に PVS クリーンup プロセスを手動でアクティブにするには、次のサンプル スクリプトを使用します。

EXEC sys.sp_persistent_version_cleanup [database_name];

次に例を示します。

EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];

または、現在のデータベース コンテキストを想定する場合:

USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;