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 mdw_purge_data SQL Server-Agent Auftrag für das 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 Namen des Formularcomputers \besteht. Wenn der Wert NULL ist, wird die Standardinstanz auf dem lokalen Server verwendet.

[ @collection_set_uid = ] 'collection_set_uid'

Die GUID für den Sammlungssatz. @collection_set_uid ist eindeutiger Bezeichner mit einem Standardwert von NULL. Wenn der Wert NULL ist, werden die qualifizierenden Zeilen aus allen Sammlungssätzen entfernt. 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 der Wert NULL ist, wird der Vorgang so lange ausgeführt, bis alle gekennzeichneten Zeilen entfernt sind oder bis der Vorgang manuell beendet wird.

Rückgabecodewerte

0 (Erfolg) 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, werden nur die nicht übermittelten Daten erneut Standard. 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 mit dem zugeordneten Verhalten für alle Parameter 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 wird, wird der Wert in der spalte valid_through in der core.snapshots Ansicht verwendet, um die Zeilen für den Sammlungssatz zu bestimmen, die zum Entfernen berechtigt sind.

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