Поделиться через


core.sp_purge_data (Transact-SQL)

Удаляет данные из хранилища данных управления в соответствии со стратегией хранения. Эта процедура выполняется ежедневно заданием 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, то остаются только незафиксированные данные. Эти данные могут быть удалены во время следующего запуска задания.

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

Разрешения

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

Примеры

А. Запуск процедуры sp_purge_data без параметров

В следующем примере выполняется процедура core.sp_purge_data без параметров. Поэтому для всех параметров используется значение по умолчанию (NULL) и выполняются действия, соответствующие этому значению.

USE <management_data_warehouse>;
EXECUTE core.sp_purge_data;
GO

Б. Задание значений срока хранения и продолжительности операции

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

USE <management_data_warehouse>;
EXECUTE core.sp_purge_data @retention_days = 7, @duration = 5;
GO

В. Задание имени экземпляра и набора сбора

В следующем примере удаляются данные из хранилища данных управления для заданного набора сбора в указанном экземпляре 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