Condividi tramite


core.sp_purge_data (Transact-SQL)

Rimuove i dati dal data warehouse di gestione in base ai criteri di conservazione. Questa procedura viene eseguita ogni giorno dal processo mdw_purge_data di SQL Server Agent sul data warehouse di gestione associato all'istanza specificata. È possibile utilizzare questa procedura per eseguire una rimozione su richiesta dei dati dal data warehouse di gestione.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • [@retention_days =] retention_days
    Numero di giorni per cui conservare i dati nelle tabelle del data warehouse di gestione. I dati con un timestamp precedente a retention_days vengono rimossi. retention_days è smallint e il valore predefinito è NULL. Se specificato, il valore deve essere positivo. Quando è NULL, il valore nella colonna valid_through della vista core.snapshots determina le righe da rimuovere.

  • [@instance_name = ] 'instance_name'
    Nome dell'istanza per il set di raccolta. instance_name è di tipo sysname e il valore predefinito è NULL.

    instance_name deve essere il nome completo dell'istanza costituito dal nome del computer e dal nome dell'istanza nel formato nomecomputer\nomeistanza. Quando è NULL, viene utilizzata l'istanza predefinita nel server locale.

  • [@collection_set_uid = ] 'collection_set_uid'
    GUID per il set di raccolta. collection_set_uid è di tipo uniqueidentifier e il valore predefinito è NULL. Quando è NULL, vengono rimosse le righe risultanti da tutti i set di raccolta. Per ottenere questo valore, eseguire una query sulla vista del catalogo syscollector_collection_sets.

  • [@duration = ] duration
    Numero massimo di minuti per l'esecuzione dell'operazione di eliminazione. duration è di tipo smallint e il valore predefinito è NULL. Se specificato, il valore deve essere zero o un numero intero positivo. Quando è NULL, l'operazione viene eseguita finché non vengono rimosse tutte le righe restituite o l'operazione non viene arrestata manualmente.

Codici restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

Questa procedura seleziona le righe della vista core.snapshots risultanti per la rimozione in base a un periodo di memorizzazione. Tutte le righe risultanti per la rimozione vengono eliminate dalla tabella core.snapshots_internal. L'eliminazione delle righe precedenti genera un'azione di eliminazione a catena in tutte le tabelle del data warehouse di gestione. Questa operazione viene eseguita utilizzando la clausola ON DELETE CASCADE definita per tutte le tabelle in cui vengono archiviati i dati raccolti.

Ogni snapshot e i dati associati vengono eliminati all'interno di una transazione esplicita, dopodiché viene eseguito il commit. Pertanto, se l'operazione di eliminazione viene arrestata manualmente o il valore specificato per @duration viene superato, rimangono solo i dati di cui non è stato eseguito il commit. Questi dati possono essere rimossi alla successiva esecuzione del processo.

La procedura deve essere eseguita nel contesto del database del data warehouse di gestione.

Autorizzazioni

Richiede l'appartenenza al ruolo predefinito del database mdw_admin (con autorizzazione EXECUTE).

Esempi

A. Esecuzione di sp_purge_data senza parametri

Nell'esempio seguente viene eseguita la stored procedure core.sp_purge_data senza specificare alcun parametro. Il valore predefinito NULL viene pertanto utilizzato per tutti i parametri, con il comportamento associato.

USE <management_data_warehouse>;
EXECUTE core.sp_purge_data;
GO

B. Specifica dei valori di memorizzazione e durata

Nell'esempio seguente vengono rimossi dal data warehouse di gestione i dati più vecchi di 7 giorni. Inoltre, viene specificato il parametro @duration in modo che l'esecuzione dell'operazione non duri più di 5 minuti.

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

C. Specifica del nome di un'istanza e di un set di raccolta

Nell'esempio seguente vengono rimossi i dati dal data warehouse di gestione per un set di raccolta specifico nell'istanza specificata di SQL Server. Poiché il valore di @retention_days non viene specificato, per determinare le righe per il set di raccolta da rimuovere viene utilizzato il valore della colonna valid_through della vista core.snapshots.

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