Share via


core.sp_purge_data (Transact-SQL)

Aplica-se a: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 à @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 no core.snapshots modo de 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 completo da instância, que consiste no nome do computador e no nome da instância no formato nome_do_computadornome_\da-instância. 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 um padrão de 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 de 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 será executada até que todas as linhas qualificadas sejam removidas ou que a operação seja interrompida manualmente.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

Este procedimento seleciona linhas no core.snapshots modo de 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 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 à 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 de um determinado conjunto de coleta na instância especificada do SQL Server. Como @retention_days não é especificado, o valor na coluna valid_through no core.snapshots modo de exibição é usado para determinar as linhas do conjunto de coleta que sã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