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


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 должно быть полным именем экземпляра, которое состоит из имени компьютера и имени экземпляра в имени экземпляра компьютера\формы. Если параметр имеет значение 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

См. также