Compartir a través de


core.sp_purge_data (Transact-SQL)

Se aplica a: SQL Server

Quita los datos del almacén de administración de datos basándose en una directiva de retención. El trabajo de Agente SQL Server ejecuta diariamente mdw_purge_data este procedimiento en el almacenamiento de datos de administración asociado a la instancia especificada. Puede utilizar este procedimiento almacenado para realizar una eliminación a petición de los datos del almacén de administración de datos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @retention_days = ] retention_days

Número de días que se van a retener los datos en las tablas de almacén de administración de datos. Se quitan los datos con una marca de tiempo anterior a @retention_days . @retention_days es smallint, con un valor predeterminado de NULL. Si se especifica, el valor debe ser positivo. Cuando NULLes , el valor de la columna valid_through de la core.snapshots vista determina las filas que son aptas para la eliminación.

[ @instance_name = ] 'instance_name'

Nombre de la instancia del conjunto de recopilación. @instance_name es sysname, con un valor predeterminado de NULL.

instance_name debe ser el nombre de instancia completo, que consta del nombre del equipo y del nombre de instancia con el formato <computername>\<instancename>. Cuando NULLes , se usa la instancia predeterminada en el servidor local.

[ @collection_set_uid = ] 'collection_set_uid'

GUID del conjunto de recopilación. @collection_set_uid es uniqueidentifier, con un valor predeterminado de NULL. Cuando NULL, se quitan las filas aptas de todos los conjuntos de recopilación. Para obtener este valor, consulte la vista de syscollector_collection_sets catálogo.

[ @duration = ] duration

El número máximo de minutos que debe durar la ejecución de la operación de purga. @duration es smallint, con un valor predeterminado de NULL. Si se especifica, el valor debe ser cero o un entero positivo. Cuando NULLes , la operación se ejecuta hasta que se quitan todas las filas calificadas o la operación se detiene manualmente.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

Este procedimiento selecciona filas en la core.snapshots vista que cumplen los requisitos para la eliminación en función de un período de retención. Todas las filas que cumplen los requisitos para la eliminación se eliminan de la core.snapshots_internal tabla. La eliminación de las filas precedentes desencadenará una acción de eliminación en cascada en todas las tablas del almacén de administración de datos. Esto se consigue al usar la cláusula ON DELETE CASCADE, que se define para todas las tablas que contienen datos recopilados.

Cada instantánea y sus datos asociados se eliminan dentro de una transacción explícita y, a continuación, se confirma la operación. Por lo tanto, si la operación de purga se detiene manualmente o se supera el valor especificado para @duration , solo permanecen los datos no confirmados. Estos datos se pueden quitar la próxima vez que se ejecute el trabajo.

El procedimiento se debe ejecutar en el contexto de la base de datos de almacén de administración de datos.

Permisos

Requiere la pertenencia al rol fijo de base de datos mdw_admin (con permiso EXECUTE).

Ejemplos

A Ejecutar sp_purge_data sin parámetros

En el ejemplo siguiente se ejecuta core.sp_purge_data sin especificar ningún parámetro. Por lo tanto, el valor predeterminado de NULL se usa para todos los parámetros, con el comportamiento asociado.

USE <management_data_warehouse>;
EXECUTE core.sp_purge_data;
GO

B. Especificar valores de retención y duración

En el ejemplo siguiente se quitan los datos del almacén de administración de datos anteriores a 7 días. Además, se especifica el @duration parámetro para que la operación se ejecute más de 5 minutos.

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

C. Especificar un nombre de instancia y un conjunto de recopilación

En el ejemplo siguiente se quitan los datos del almacenamiento de administración de datos para un conjunto de recopilación determinado en la instancia especificada de SQL Server. Dado que no se especifica @retention_days , el valor de la columna de la valid_through core.snapshots vista se usa para determinar las filas del conjunto de recopilación que son aptos para la eliminación.

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