sys.sp_flush_CT_internal_table_on_demand (Transact-SQL)
適用対象:SQL ServerAzure SQL DatabaseAzure 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 メンバーだけです。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示