core.sp_purge_data (Transact-SQL)
適用対象: SQL Server
保有ポリシーに基づいて、管理データ ウェアハウスからデータを削除します。 このプロシージャは、指定したインスタンスに関連付けられている管理データ ウェアハウスに対して、mdw_purge_data
SQL Server エージェント ジョブによって毎日実行されます。 このストアド プロシージャを使用して、管理データ ウェアハウスからデータをオンデマンドで削除できます。
構文
core.sp_purge_data
[ [ @retention_days = ] retention_days ]
[ , [ @instance_name = ] 'instance_name' ]
[ , [ @collection_set_uid = ] 'collection_set_uid' ]
[ , [ @duration = ] duration ]
[ ; ]
引数
[ @retention_days = ] retention_days
管理データ ウェアハウス テーブルにデータを保持する日数。 @retention_daysより古いタイムスタンプを持つデータが削除されます。 @retention_days は smallint で、既定値は NULL
です。 指定する場合、値は正である必要があります。 NULL
すると、core.snapshots
ビューの valid_through 列の値によって、削除の対象となる行が決まります。
[ @instance_name = ] 'instance_name'
コレクション セットのインスタンスの名前。 @instance_name は sysname で、既定値は NULL
です。
instance_name は、 <computername>\<instancename>
形式のコンピューター名とインスタンス名で構成される完全修飾インスタンス名である必要があります。 NULL
すると、ローカル サーバー上の既定のインスタンスが使用されます。
[ @collection_set_uid = ] 'collection_set_uid'
コレクション セットの GUID を指定します。 @collection_set_uid は uniqueidentifier で、既定値は NULL
です。 NULL
すると、すべてのコレクション セットの修飾行が削除されます。 この値を取得するには、 syscollector_collection_sets
カタログ ビューに対してクエリを実行します。
[ @duration = ] duration
消去操作を実行する最大時間 (分)。 @duration は smallint で、既定値は NULL
です。 指定する場合、値はゼロまたは正の整数にする必要があります。 NULL
すると、修飾されたすべての行が削除されるか、操作が手動で停止されるまで、操作が実行されます。
リターン コードの値
0
(成功) または 1
(失敗)。
解説
この手順では、保持期間に基づいて削除の対象となる core.snapshots
ビューの行を選択します。 削除の対象となるすべての行は、 core.snapshots_internal
テーブルから削除されます。 上記の行を削除すると、すべての管理データ ウェアハウス テーブルで連鎖削除アクションがトリガーされます。 これは、収集されたデータを格納するすべてのテーブルに対して定義されている ON DELETE CASCADE 句を使って実行されます。
各スナップショットとその関連データは、明示的なトランザクションで削除されてからコミットされます。 したがって、消去操作が手動で停止した場合、または @duration に指定された値を超えた場合、コミットされていないデータのみが残ります。 このデータは、ジョブの次回の実行時に削除できます。
このプロシージャは、管理データ ウェアハウス データベースのコンテキストで実行する必要があります。
アクセス許可
(EXECUTE 権限を持つ) mdw_admin 固定データベース ロールのメンバーシップが必要です。
例
A. パラメーターなしでsp_purge_dataを実行する
次の例では、パラメーターを指定せずに core.sp_purge_data
を実行します。 したがって、 NULL
の既定値は、関連付けられた動作を持つすべてのパラメーターに使用されます。
USE <management_data_warehouse>;
EXECUTE core.sp_purge_data;
GO
B. 保持期間と期間の値を指定する
次の例では、7 日より前の管理データ ウェアハウスからデータを削除します。 さらに、 @duration パラメーターを指定して、操作が 5 分以内に実行されるようにします。
USE <management_data_warehouse>;
EXECUTE core.sp_purge_data @retention_days = 7, @duration = 5;
GO
C: インスタンス名とコレクション セットを指定する
次の例では、SQL Server の指定したインスタンス上の特定のコレクション セットの管理データ ウェアハウスからデータを削除します。 @retention_daysが指定されていないため、core.snapshots
ビューのvalid_through
列の値を使用して、削除の対象となるコレクション セットの行が決定されます。
USE <management_data_warehouse>;
GO
-- Get the collection set unique identifier for the Disk Usage system collection set.
DECLARE @disk_usage_collection_set_uid uniqueidentifier = (SELECT collection_set_uid
FROM msdb.dbo.syscollector_collection_sets WHERE name = N'Disk Usage');
EXECUTE core.sp_purge_data @instance_name = @@SERVERNAME, @collection_set_uid = @disk_usage_collection_set_uid;
GO