core.sp_purge_data (Transact-SQL)

Entfernt Daten basierend auf einer Beibehaltungsrichtlinie aus dem Verwaltungs-Data Warehouse. Diese Prozedur wird täglich vom mdw_purge_data-Auftrag des SQL Server-Agents für das Verwaltungs-Data Warehouse ausgeführt, das der angegebenen Instanz zugeordnet ist. Sie können mit dieser gespeicherten Prozedur Daten aus dem Verwaltungs-Data Warehouse bedarfsgesteuert entfernen.

Themenlink (Symbol)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 älteren Zeitstempel als retention_days werden entfernt. retention_days ist vom Datentyp smallint mit dem Standardwert NULL. Wenn angegeben, muss der Wert positiv sein. Wenn der Wert NULL ist, legt der Wert in der valid_through-Spalte in der core.snapshots-Sicht die Zeilen fest, die entfernt werden können.

  • [@instance_name = ] 'instance_name'
    Der Name der Instanz für den Sammlungssatz. instance_name ist sysname mit dem Standardwert NULL.

    instance_name muss der vollqualifizierte Instanzname sein, der aus dem Computernamen und dem Instanznamen im Format computername\instancename besteht. Wenn der Wert NULL ist, wird die Standardinstanz auf dem lokalen Server verwendet.

  • [@collection_set_uid = ] 'collection_set_uid'
    GUID für den Sammlungssatz. collection_set_uid ist uniqueidentifier mit dem Standardwert 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-Katalogsicht ab.

  • [@duration = ] duration
    Die maximale Anzahl der Minuten für die Ausführung des Entfernen-Vorgangs. duration ist smallint mit dem Standardwert 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

Diese Prozedur wählt Zeilen in der core.snapshots-Sicht aus, die in Abhängigkeit einer Beibehaltungsdauer entfernt werden können. Alle für die Entfernung gekennzeichneten Zeilen 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 Entfernen-Vorgang daher manuell beendet oder der für @duration angegebene Wert überschritten wird, verbleiben nur die Daten, für die kein Commit ausgeführt wurde. 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 von "sp_purge_data" ohne Parameter

Im folgenden Beispiel wird core.sp_purge_data ohne Angabe von Parametern 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 Werten für Beibehalten und Dauer

Im folgenden Beispiel werden Daten aus dem Verwaltungs-Data Warehouse entfernt, die älter als 7 Tage sind. Zusätzlich wird der Parameter @duration angegeben, sodass der Vorgang nicht länger 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 Verwaltungs-Data Warehouse für einen bestimmten Sammlungssatz in der angegebenen Instanz von SQL Server entfernt. Da @retention_days nicht angegeben wurde, wird der Wert in der valid_through-Spalte der core.snapshots-Sicht verwendet, um die Zeilen für den Sammlungssatz festzulegen, die entfernt werden können.

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