sys.sp_persistent_version_cleanup (Transact-SQL)
適用対象: SQL Server 2019 (15.x)
Azure SQL Database
Azure SQL Managed Instance
高速データベース復旧 (ADR) の重要な要素である永続バージョン ストア (PVS) クリーンアップ プロセスを手動で開始します。 このクリーナーは、中止されたトランザクションから PVS のコミットされていないデータも削除します。
通常、 sys.sp_persistent_version_cleanup
を使用して PVS クリーンアップ プロセスを手動で開始する必要はありません。 ただし、一部のシナリオでは、ビジー状態の OLTP アクティビティの後、既知の休止/復旧期間中に PVS クリーンアップ プロセスを手動で開始することが必要になる場合があります。
ADR の詳細については、「高速データベース復旧
構文
sp_persistent_version_cleanup
[ [ @dbname = ] N'dbname' ]
[ , [ @scanallpages = ] scanallpages ]
[ , [ @clean_option = ] clean_option ]
[ ; ]
引数
[ @dbname = ] N'dbname'
省略可能。 クリーンアップするデータベースの名前。 指定しない場合は、現在のデータベース コンテキストを使用します。
@dbname は sysname で、既定値は NULL
です。
[ @scanallpages = ] scanallpages
省略可能。
@scanallpages は bit で、既定値は 0
です。
1
に設定すると、バージョン管理されていない場合でも、このオプションによってすべてのデータベース ページが強制的にクリーンアップされます。
[ @clean_option = ] clean_option
省略可能。 使用可能なオプションは、行外 PVS ページを再利用するかどうかを決定します。
@clean_option は int で、既定値は 0
です。 このリファレンスは一般的には必要ありません。既定値 0
することをお勧めします。
値 | 説明 |
---|---|
0 |
既定値、オプションが指定されていない |
1 |
個々の PVS ページの内容を確認せずに、行外のバージョン ストア |
2 |
各 PVS ページがアクセスされた行以外のバージョン ストア |
3 |
行内バージョン ストアのみ |
4 |
内部使用のみ |
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
なし。
アクセス許可
データベースに対する ALTER
権限が必要です。
解説
sys.sp_persistent_version_cleanup
ストアド プロシージャは同期的です。つまり、すべてのバージョン情報が現在の PVS からクリーンアップされるまで完了しません。
SQL Server 2019 (15.x) では、PVS クリーンアップ プロセスは一度に 1 つのデータベースに対してのみ実行されます。 Azure SQL Database と Azure SQL Managed Instance では、SQL Server 2022 (16.x) 以降では、PVS クリーンアップ プロセスは、同じインスタンス内の複数のデータベースに対して並列で実行できます。
PVS クリーンアップ プロセスが目的のデータベースに対して既に実行されている場合、このストアド プロシージャは、別の PVS クリーンアップ プロセスを開始する前にブロックされます。 ADR が有効になっている同じデータベース エンジン インスタンス上の任意のデータベースで、実行時間の長いアクティブなトランザクションでも、PVS クリーンアップがブロックされる可能性があります。
バージョン クリーナー タスクを監視するには、次のサンプル クエリを使用してプロセスを探します。
SELECT *
FROM sys.dm_exec_requests
WHERE command LIKE '%PERSISTED_VERSION_CLEANER%';
ADR が無効になっている場合は、 sys.sp_persistent_version_cleanup
実行して、PVS 内の以前のバージョンをクリーンアップします。
例
ワークロード間またはメンテナンス期間中に PVS クリーンアップ プロセスを手動でアクティブ化するには、次のサンプル スクリプトを使用します。
EXEC sys.sp_persistent_version_cleanup [database_name];
次に例を示します。
EXEC sys.sp_persistent_version_cleanup [WideWorldImporters];
または、現在のデータベース コンテキストを想定する場合:
USE [WideWorldImporters];
GO
EXEC sys.sp_persistent_version_cleanup;
関連するコンテンツ
- データベース復旧の高速化
- 高速データベース復旧 の監視とトラブルシューティング
- 高速データベース復旧の管理