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 SQL Server Agent mdw_purge_data 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 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 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 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 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 coluna valid_through na core.snapshots
exibição é usado para determinar as linhas do conjunto de coleta que sã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