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