次の方法で共有


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_dayssmallint で、既定値は NULL です。 指定する場合、値は正である必要があります。 NULLすると、core.snapshots ビューの valid_through 列の値によって、削除の対象となる行が決まります。

[ @instance_name = ] 'instance_name'

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

instance_name は、 <computername>\<instancename>形式のコンピューター名とインスタンス名で構成される完全修飾インスタンス名である必要があります。 NULLすると、ローカル サーバー上の既定のインスタンスが使用されます。

[ @collection_set_uid = ] 'collection_set_uid'

コレクション セットの GUID を指定します。 @collection_set_uiduniqueidentifier で、既定値は NULL です。 NULLすると、すべてのコレクション セットの修飾行が削除されます。 この値を取得するには、 syscollector_collection_sets カタログ ビューに対してクエリを実行します。

[ @duration = ] duration

消去操作を実行する最大時間 (分)。 @durationsmallint で、既定値は 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