Compartilhar via


core.sp_purge_data (Transact-SQL)

Aplica-se: SQL Server

Remove dados do data warehouse de gerenciamento com base em uma política de retenção. Esse procedimento é executado diariamente pelo trabalho do mdw_purge_data SQL Server Agent no data warehouse de gerenciamento associado à instância especificada. Você pode usar esse procedimento armazenado para executar uma remoção sob demanda de dados do data warehouse de gerenciamento.

Convenções de sintaxe de Transact-SQL

Sintaxe

core.sp_purge_data
    [ [ @retention_days = ] retention_days ]
    [ , [ @instance_name = ] 'instance_name' ]
    [ , [ @collection_set_uid = ] 'collection_set_uid' ]
    [ , [ @duration = ] duration ]
[ ; ]

Argumentos

@retention_days [ = ] retention_days

O número de dias para reter dados nas tabelas do data warehouse de gerenciamento. Os dados com um carimbo de data/hora anterior a @retention_days são removidos. @retention_days é smallint, com um padrão de NULL. Se especificado, o valor deverá ser positivo. Quando NULL, o valor na coluna valid_through na core.snapshots exibição determina as linhas qualificadas para remoção.

@instance_name [ = ] 'instance_name'

O nome da instância do conjunto de coleta. @instance_name é sysname, com um padrão de NULL.

instance_name deve ser o nome da instância totalmente qualificado, que consiste no nome do computador e no nome da instância no formato <computername>\<instancename>. Quando NULL, a instância padrão no servidor local é usada.

@collection_set_uid [ = ] 'collection_set_uid'

O GUID do conjunto de coleta. @collection_set_uid é uniqueidentifier, com um padrão de NULL. Quando NULL, as linhas qualificadas de todos os conjuntos de coleta são removidas. Para obter esse valor, consulte a exibição do syscollector_collection_sets catálogo.

@duration [ = ] duração

O número máximo de minutos em que a operação de limpeza deve ser executada. @duration é smallint, com um padrão de NULL. Se especificado, o valor deve ser zero ou um inteiro positivo. Quando NULL, a operação é executada até que todas as linhas qualificadas sejam removidas ou a operação seja interrompida manualmente.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

Este procedimento seleciona linhas na core.snapshots exibição que se qualificam para remoção com base em um período de retenção. Todas as linhas que se qualificam para remoção são excluídas da core.snapshots_internal tabela. A exclusão das linhas precedentes dispara a ação de exclusão em cascata em todas as tabelas do data warehouse de gerenciamento. Isso é feito por meio da cláusula ON DELETE CASCADE definida para todas as tabelas que armazenam dados coletados.

Cada instantâneo e seus dados associados são excluídos dentro de uma transação explícita e confirmados. Portanto, se a operação de limpeza for interrompida manualmente ou o valor especificado for @duration excedido, somente os dados não confirmados permanecerão. Esses dados podem ser removidos na próxima execução do trabalho.

O procedimento deve ser executado no contexto do banco de dados do data warehouse de gerenciamento.

Permissões

Requer associação na função de banco de dados fixa mdw_admin (com permissão EXECUTE).

Exemplos

R. Executar sp_purge_data sem parâmetros

O exemplo a seguir é core.sp_purge_data executado sem especificar nenhum parâmetro. Portanto, o valor padrão de NULL é usado para todos os parâmetros, com o comportamento associado.

USE <management_data_warehouse>;
EXECUTE core.sp_purge_data;
GO

B. Especificar valores de retenção e duração

O exemplo a seguir remove os dados com mais de sete dias do data warehouse de gerenciamento. Além disso, o @duration parâmetro é especificado para que a operação não seja executada por mais de 5 minutos.

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

C. Especificar um nome de instância e um conjunto de coleta

O exemplo a seguir remove dados do data warehouse de gerenciamento para um determinado conjunto de coleta na instância especificada do SQL Server. Como @retention_days não é especificado, o valor na valid_through coluna na core.snapshots exibição é usado para determinar as linhas do conjunto de coleta que estão qualificadas para remoção.

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