Compartilhar via


core.sp_purge_data (Transact-SQL)

Remove dados do data warehouse de gerenciamento com base em uma política de retenção. Esse procedimento é executado diariamente pelo trabalho mdw_purge_data do 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.

Ícone de vínculo de tópico Convenções da 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 o padrão NULL. Se especificado, o valor deverá ser positivo. Quando NULL, o valor na coluna valid_through da tabela core.snapshots determinará 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 o padrão 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 será usada.

  • [@collection_set_uid = ] 'collection_set_uid'
    O GUID do conjunto de coleta. collection_set_uid é uniqueidentifier, com o padrão NULL. Quando NULL, as linhas de qualificação de todos os conjuntos de coleta serã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 o padrão 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

Esse 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 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 se o valor especificado para @duration for excedido, apenas 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 sete dias do data warehouse de gerenciamento. Além disso, o parâmetro @duration é especificado de forma que a operação seja executada em até 5 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 é especificado, o valor na coluna valid_through na exibição core.snapshots é usado para determinar as linhas do conjunto de coleta que estão elegíveis 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

Consulte também

Referência

Procedimentos armazenados do sistema (Transact-SQL)

Procedimentos armazenados de coletor de dados (Transact-SQL)