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.
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
Vedere anche