core.sp_purge_data (Transact-SQL)

適用対象:SQL Server

保有ポリシーに基づいて、管理データ ウェアハウスからデータを削除します。 このプロシージャは、指定したインスタンスに関連付けられている管理データ ウェアハウスに対して、mdw_purge_data SQL Server エージェント ジョブによって毎日実行されます。 このストアド プロシージャを使用して、管理データ ウェアハウスからデータをオンデマンドで削除できます。

Transact-SQL 構文表記規則

構文

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 の場合、ビューの valid_through 列の core.snapshots 値によって、削除の対象となる行が決まります。

[ @instance_name = ] 'instance_name'

コレクション セットのインスタンスの名前。 @instance_nameは sysname で、既定値は NULL.

instance_nameは、コンピューター名と、コンピューター名のインスタンス名の形式\で構成される完全修飾インスタンス名である必要があります。 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 、ビューのvalid_through列の core.snapshots 値は、削除の対象となるコレクション セットの行を決定するために使用されます。

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