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 è di tipo 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 l'insieme 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 l'insieme di raccolta. collection_set_uid è di tipo uniqueidentifier e il valore predefinito è NULL. Quando è NULL, vengono rimosse le righe risultanti da tutti gli insiemi 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 interrotta manualmente.

Valori dei 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. Se pertanto l'operazione di eliminazione viene interrotta 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

È richiesta 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. Viene inoltre 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 insieme di raccolta

Nell'esempio seguente vengono rimossi i dati dal data warehouse di gestione per un insieme di raccolta specifico nell'istanza specificata di SQL Server. Poiché il valore di @retention\_days non viene specificato, per determinare le righe per l'insieme 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