core.sp_purge_data (Transact-SQL)
保有ポリシーに基づいて、管理データ ウェアハウスからデータを削除します。 このプロシージャは、指定されたインスタンスに関連付けられている管理データ ウェアハウスに対して、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 日を経過したデータを管理データ ウェアハウスから削除します。 また、操作の実行時間が 5 分を超えないように @duration パラメーターを指定します。
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