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 имеет небольшой размер с значением по умолчаниюNULL. Указываемое значение должно быть положительным числом. Если NULLзначение в столбце valid_through в core.snapshots представлении определяет строки, которые могут быть удалены.

[ @instance_name = ] 'instance_name'

Имя экземпляра набора элементов сбора. @instance_name — sysname( значение по умолчанию NULL).

instance_name должно быть полным именем экземпляра, который состоит из имени компьютера и имени экземпляра в форме<computername>\<instancename>. При NULLиспользовании экземпляра по умолчанию на локальном сервере.

[ @collection_set_uid = ] 'collection_set_uid'

Имеет значение GUID для набора элементов сбора. @collection_set_uid является уникальным идентификатором по умолчаниюNULL. При NULLудалении соответствующих строк из всех наборов коллекций удаляются. Чтобы получить это значение, выполните запрос к представлению syscollector_collection_sets каталога.

[ @duration = ] длительность

Максимальное число минут для выполнения операции очистки. @duration имеет небольшой размер с значением по умолчаниюNULL. Указываемое значение должно быть больше или равно нулю. Когда NULLоперация выполняется, пока не будут удалены все квалифицированные строки или операция будет остановлена вручную.

Значения кода возврата

0 (успешно) или 1 (сбой).

Замечания

Эта процедура выбирает строки в core.snapshots представлении, которые соответствуют удалению на основе периода хранения. Все строки, которые относятся к удалению, удаляются из core.snapshots_internal таблицы. Удаление устаревших строк приводит к каскадному удалению строк во всех таблицах хранилища данных управления. Указанная процедура выполняется с помощью предложения ON DELETE CASCADE, которое определено для всех таблиц, в которых хранятся собранные данные.

Каждый моментальный снимок и связанные с ним данные удаляются в пределах явной транзакции, а затем транзакция фиксируется. Таким образом, если операция очистки остановлена вручную или значение, указанное для @duration этого параметра, превышается, остаются только незафиксированные данные. Эти данные могут быть удалены во время следующего запуска задания.

Эта процедура должна выполняться в контексте базы данных хранилища данных управления.

Разрешения

Требуется членство в предопределенных роли базы данных mdw_admin (с разрешением EXECUTE).

Примеры

А. Запуск 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