core.sp_purge_data (Transact-SQL)
Gilt für: SQL Server
Entfernt Daten basierend auf einer Beibehaltungsrichtlinie aus dem Verwaltungs-Data Warehouse. Diese Prozedur wird täglich vom SQL Server-Agent Auftrag für das mdw_purge_data
Verwaltungsdatenlager ausgeführt, das der angegebenen Instanz zugeordnet ist. Sie können mit dieser gespeicherten Prozedur Daten aus dem Verwaltungs-Data Warehouse bedarfsgesteuert entfernen.
Transact-SQL-Syntaxkonventionen
Syntax
core.sp_purge_data
[ [ @retention_days = ] retention_days ]
[ , [ @instance_name = ] 'instance_name' ]
[ , [ @collection_set_uid = ] 'collection_set_uid' ]
[ , [ @duration = ] duration ]
[ ; ]
Argumente
[ @retention_days = ] retention_days
Die Anzahl der Tage für die Beibehaltung von Daten in den Verwaltungs-Data Warehouse-Tabellen. Daten mit einem Zeitstempel, der älter als @retention_days ist, werden entfernt. @retention_days ist klein, mit einem Standardwert von NULL
. Wenn angegeben, muss der Wert positiv sein. Wenn NULL
, bestimmt der Wert in der Spalte valid_through in der core.snapshots
Ansicht die Zeilen, die zum Entfernen berechtigt sind.
[ @instance_name = ] 'instance_name'
Der Name der Instanz für den Sammlungssatz. @instance_name ist "sysname" mit einem Standardwert von NULL
.
instance_name muss der vollqualifizierte Instanzname sein, der aus dem Computernamen und dem Instanznamen im Formular <computername>\<instancename>
besteht. Wenn NULL
die Standardinstanz auf dem lokalen Server verwendet wird.
[ @collection_set_uid = ] 'collection_set_uid'
Die GUID für den Sammlungssatz. @collection_set_uid ist eindeutiger Bezeichner mit einem Standardwert von NULL
. Wenn NULL
, qualifizierende Zeilen aus allen Sammlungssätzen entfernt werden. Um diesen Wert abzurufen, fragen Sie die syscollector_collection_sets
Katalogansicht ab.
[ @duration = ] Dauer
Die maximale Anzahl der Minuten für die Ausführung des Entfernen-Vorgangs. @duration ist klein, mit einem Standardwert von NULL
. Wenn dieser Wert angegeben ist, muss er 0 (null) oder eine positive ganze Zahl sein. Wenn NULL
der Vorgang ausgeführt wird, bis alle qualifizierten Zeilen entfernt werden oder der Vorgang manuell beendet wird.
Rückgabecodewerte
0
(erfolgreich) oder 1
Fehler.
Hinweise
In diesem Verfahren werden Zeilen in der core.snapshots
Ansicht ausgewählt, die basierend auf einem Aufbewahrungszeitraum für die Entfernung gelten. Alle Zeilen, die zum Entfernen berechtigt sind, werden aus der core.snapshots_internal
Tabelle gelöscht. Das Löschen der vorangehenden Zeilen löst eine Löschweitergabe (cascading delete) in allen Verwaltungs-Data Warehouse-Tabellen aus. Dies wird durch die Verwendung der ON DELETE CASCADE-Klausel erzielt, die für alle Tabellen definiert wird, in denen gesammelte Daten gespeichert werden.
Jede Momentaufnahme wird mit den zugeordneten Daten in einer expliziten Transaktion gelöscht. Anschließend wird ein Commit ausgeführt. Wenn der Bereinigungsvorgang manuell beendet wird oder der für den angegebenen @duration Wert überschritten wird, bleiben daher nur die nicht ausgelassenen Daten bestehen. Diese Daten können bei der nächsten Ausführung des Auftrags entfernt werden.
Die Prozedur muss im Kontext der Verwaltungs-Data Warehouse-Datenbank ausgeführt werden.
Berechtigungen
Erfordert die Mitgliedschaft in der festen Datenbankrolle mdw_admin (mit EXECUTE-Berechtigung).
Beispiele
A. Ausführen sp_purge_data ohne Parameter
Im folgenden Beispiel wird ohne Angabe von Parametern core.sp_purge_data
ausgeführt. Daher wird der Standardwert NULL
für alle Parameter mit dem zugehörigen Verhalten verwendet.
USE <management_data_warehouse>;
EXECUTE core.sp_purge_data;
GO
B. Angeben von Aufbewahrungs- und Dauerwerten
Im folgenden Beispiel werden Daten aus dem Verwaltungs-Data Warehouse entfernt, die älter als 7 Tage sind. Darüber hinaus wird der @duration Parameter so angegeben, dass der Vorgang nicht mehr als 5 Minuten ausgeführt wird.
USE <management_data_warehouse>;
EXECUTE core.sp_purge_data @retention_days = 7, @duration = 5;
GO
C. Angeben eines Instanznamens und eines Sammlungssatzes
Im folgenden Beispiel werden Daten aus dem Verwaltungsdatenlager für eine bestimmte Sammlung entfernt, die für die angegebene Instanz von SQL Server festgelegt ist. Da @retention_days nicht angegeben ist, wird der Wert in der Spalte in der valid_through
core.snapshots
Ansicht verwendet, um die Zeilen für den Sammlungssatz zu bestimmen, der zum Entfernen berechtigt ist.
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