core.sp_purge_data (Transact-SQL)

Remove dados do data warehouse de gerenciamento com base em uma diretiva de retenção. Este procedimento é executado diariamente pelo trabalho do SQL Server Agent mdw_purge_data em relação ao data warehouse de gerenciamento associado à instância especificada. Você pode usar este procedimento armazenado para executar uma remoção sob demanda de dados do data warehouse de gerenciamento.

Ícone de vínculo de tópicoConvenções de sintaxe 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. Dados com um carimbo de data/hora mais antigo do que 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 da tabela core.snapshots determina as linhas que estão 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 totalmente qualificado da instância que consiste nos nomes do computador e 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 de qualificação de todos os conjuntos de coleta são removidas. Para obter esse valor, consulte a exibição do catálogo syscollector_collection_sets.

  • [@duration = ] duration
    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 será executada até que todas as linhas qualificadas sejam removidas ou que a operação seja interrompida manualmente.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

Este procedimento seleciona linhas na exibição core.snapshots que se qualificam para remoção com base em um período de retenção. Todas as linhas qualificadas para remoção são excluídas da tabela core.snapshots_internal. 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 usando a 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 se o valor especificado para @duration for 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

A. Executando sp_purge_data sem nenhum parâmetro

O exemplo a seguir executa core.sp_purge_data 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. Especificando valores de retenção e duração

O exemplo a seguir remove os dados com mais de 7 dias do data warehouse de gerenciamento. Além disso, o parâmetro @duration é especificado de forma que a operação seja executada em até cinco minutos.

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

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

O exemplo a seguir remove os dados do data warehouse de gerenciamento para um determinado conjunto de coleta na instância especificada do SQL Server. Como @retention\_days não está especificado, o valor na coluna valid_through da exibição core.snapshots é 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