core.sp_purge_data (Transact-SQL)

S'applique à : SQL Server

Supprime des données de l'entrepôt de données de gestion en fonction d'une stratégie de rétention. Cette procédure est exécutée quotidiennement par le mdw_purge_data travail SQL Server Agent sur l’entrepôt de données de gestion associé à l’instance spécifiée. Vous pouvez utiliser cette procédure stockée pour effectuer une suppression à la demande des données dans l'entrepôt de données de gestion.

Conventions de la syntaxe Transact-SQL

Syntaxe

core.sp_purge_data
    [ [ @retention_days = ] retention_days ]
    [ , [ @instance_name = ] 'instance_name' ]
    [ , [ @collection_set_uid = ] 'collection_set_uid' ]
    [ , [ @duration = ] duration ]
[ ; ]

Arguments

[ @retention_days = ] retention_days

Nombre de jours pendant lesquels conserver des données dans les tables de l'entrepôt de données de gestion. Les données avec un horodatage antérieur à @retention_days sont supprimées. @retention_days est smallint, avec une valeur par défaut .NULL Si elle est spécifiée, la valeur doit être positive. Lorsque NULL, la valeur de la colonne valid_through dans la core.snapshots vue détermine les lignes éligibles à la suppression.

[ @instance_name = ] 'instance_name'

Nom de l'instance pour le jeu d'éléments de collecte. @instance_name est sysname, avec la valeur par défaut NULL.

instance_name doit être le nom complet de l’instance, qui se compose du nom de l’ordinateur et du nom de l’instance dans le formulaire <computername>\<instancename>. Quand NULL, l’instance par défaut sur le serveur local est utilisée.

[ @collection_set_uid = ] 'collection_set_uid'

GUID du jeu d'éléments de collecte. @collection_set_uid est uniqueidentifier, avec la valeur par défaut NULL. Lorsque NULL, les lignes éligibles de tous les jeux de collections sont supprimées. Pour obtenir cette valeur, interrogez l’affichage syscollector_collection_sets catalogue.

[ @duration = ] durée

Nombre maximal de minutes pendant lesquelles l'opération de vidage doit s'exécuter. @duration est smallint, avec une valeur par défaut de NULL. Si elle est spécifiée, la valeur doit être zéro ou un entier positif. Lorsque NULL, l’opération s’exécute jusqu’à ce que toutes les lignes qualifiées soient supprimées ou que l’opération soit arrêtée manuellement.

Valeurs des codes de retour

0 (réussite) or 1 (échec).

Notes

Cette procédure sélectionne les lignes de la core.snapshots vue qui peuvent être supprimées en fonction d’une période de rétention. Toutes les lignes éligibles à la suppression sont supprimées de la core.snapshots_internal table. La suppression des lignes précédentes déclenche une action de suppression en cascade dans toutes les tables de l'entrepôt de données de gestion. Cette opération est effectuée en utilisant la clause ON DELETE CASCADE, qui est définie pour toutes les tables stockant des données collectées.

Chaque instantané et ses données associées sont supprimés dans une transaction explicite, puis validés. Par conséquent, si l’opération de vidage est arrêtée manuellement ou si la valeur spécifiée est @duration dépassée, seules les données non validées restent. Ces données peuvent être supprimées lors de la prochaine exécution du travail.

La procédure doit être exécutée dans le contexte de la base de données d'entrepôt de données de gestion.

autorisations

Nécessite l’appartenance au rôle de base de données fixe mdw_admin (avec l’autorisation EXECUTE).

Exemples

R. Exécuter sp_purge_data sans paramètres

L’exemple suivant s’exécute core.sp_purge_data sans spécifier de paramètres. Par conséquent, la valeur par défaut est NULL utilisée pour tous les paramètres, avec le comportement associé.

USE <management_data_warehouse>;
EXECUTE core.sp_purge_data;
GO

B. Spécifier les valeurs de rétention et de durée

L'exemple suivant supprime les données de l'entrepôt de données de gestion antérieures à 7 jours. En outre, le @duration paramètre est spécifié afin que l’opération ne s’exécute plus de 5 minutes.

USE <management_data_warehouse>;
EXECUTE core.sp_purge_data @retention_days = 7, @duration = 5;
GO

C. Spécifier un nom d’instance et un jeu de collections

L’exemple suivant supprime les données de l’entrepôt de données de gestion pour un jeu de collecte donné sur l’instance spécifiée de SQL Server. Étant donné que @retention_days n’est pas spécifié, la valeur de la valid_through colonne de la core.snapshots vue est utilisée pour déterminer les lignes du jeu de collections éligibles à la suppression.

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