sys.sp_flush_CT_internal_table_on_demand (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
このストアド プロシージャを使用すると、変更追跡が有効になっているデータベース内のテーブルのサイド テーブル (change_tracking_objectid
) を手動でクリーンアップできます。 TableToClean パラメーターが渡されない場合、このプロセスは、変更追跡が有効になっているデータベース内のすべてのテーブルのすべてのサイド テーブルをクリーンアップします。
構文
sys.sp_flush_CT_internal_table_on_demand
[ @TableToClean = ] 'TableToClean'
[ , [ @DeletedRowCount = ] DeletedRowCount OUTPUT ]
[ ; ]
引数
[ @TableToClean = ] 'TableToClean'
変更追跡が有効なテーブルを手動でクリーンアップします。 バックログは、変更の追跡によって自動クリーンアップのために残されます。 すべてのサイド テーブルをクリーンアップするには null を指定できます。
[ @DeletedRowCount = ] 'DeletedRowCount' OUTPUT
@DeletedRowCount は、 bigint 型の OUTPUT パラメーターです。 このパラメーターは、プロセス中にクリーンアップされた行の合計数を返します。
リターン コードの値
0
(成功) または 1
(失敗)。
例
DECLARE @DeletedRowCount BIGINT;
EXEC sys.sp_flush_CT_internal_table_on_demand '[Sales].[Orders]',
@DeletedRowCount = @DeletedRowCount OUTPUT;
PRINT CONCAT('Number of rows deleted: ', @DeletedRowCount);
GO
結果セットは次のとおりです。
Started executing query at Line 1
Cleanup Watermark = 17
Internal Change Tracking table name : change_tracking_1541580530
Total rows deleted: 0.
Number of rows deleted: 0
Total execution time: 00:00:02.949
解説
この手順は、変更の追跡が有効になっているデータベースで実行する必要があります。
ストアド プロシージャを実行すると、次のいずれかのシナリオが発生します。
テーブルが存在しない場合、または変更の追跡が有効になっていない場合は、適切なエラー メッセージがスローされます。
このストアド プロシージャは、
sys.change_tracking_tables
動的管理ビューを使用して、無効なクリーンアップ バージョンに基づく変更追跡サイド テーブルからコンテンツをクリーンアップする別の内部ストアド プロシージャを呼び出します。 実行中は、(5000 行ごとに) 削除された合計行の情報が表示されます。
このストアド プロシージャは、次の製品で使用できます。
- SQL Server 2016 (13.x) Service Pack 1 以降のバージョン
- Azure SQL Database と Azure SQL Managed Instance
アクセス許可
このプロシージャを実行できるのは、 sysadmin サーバー ロールまたは db_owner データベース ロールのメンバーだけです。