Compartir a través de


core.sp_purge_data (Transact-SQL)

Quita los datos del almacén de datos de administración en función de una directiva de retención. Este procedimiento lo ejecuta diariamente el trabajo del Agente SQL Server mdw_purge_data en el almacén de administración de datos 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.

Icono de vínculo a temasConvenciones 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. Los datos con una marca de tiempo anterior a retention_days se quitan. retention_days es de tipo smallint y su valor predeterminado es NULL. Si se especifica, el valor debe ser positivo. Cuando es NULL, el valor de la columna valid_through de la vista core.snapshots determina las filas que pueden eliminarse.

  • [@instance_name = ] 'instance_name'
    Nombre de la instancia del conjunto de recopilación. instance_name es de tipo sysname y su valor predeterminado es NULL.

    instance_name debe ser un nombre de instancia completo, y se compone del nombre del equipo y del nombre de la instancia, con el formato nombreEquipo\nombreInstancia. Cuando es NULL, se utiliza la instancia predeterminada en el servidor local.

  • [@collection_set_uid = ] 'collection_set_uid'
    GUID del conjunto de recopilación. collection_set_uid es de tipo uniqueidentifier y su valor predeterminado es NULL. Cuando es NULL, se quitan las filas certificadas de todos los conjuntos de recopilación. Para obtener este valor, consulte la vista de catálogo syscollector_collection_sets.

  • [@duration = ] duration
    Número máximo de minutos que la operación de purga se debe ejecutar. duration es de tipo smallint y su valor predeterminado es NULL. Si se especifica, el valor debe ser cero o un entero positivo. Cuando es NULL, la operación se ejecuta hasta que se quitan todas las filas certificadas o se detiene manualmente la operación.

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

Este procedimiento selecciona las filas de la vista core.snapshots que pueden quitarse de acuerdo con el período de retención. Todas las filas que se pueden quitar se eliminan de la tabla core.snapshots_internal. La eliminación de las filas precedentes desencadenará una acción de eliminación 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 consiguiente, si se detiene manualmente la operación de purga o se supera el valor especificado para @duration, solo permanecen los datos que no se han confirmado. 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 del almacén de administración de datos.

Permisos

Requiere la pertenencia a la función de base de datos fija mdw_admin (con permiso EXECUTE).

Ejemplos

A. Ejecución de sp_purge_data sin parámetros

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

USE <management_data_warehouse>;
EXECUTE core.sp_purge_data;
GO

B. Especificación de 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 parámetro @duration para que la operación no se ejecute durante más de 5 minutos.

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

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

En el ejemplo siguiente se quitan los datos del almacén de administración de datos que contiene un conjunto de recopilación determinado en la instancia de SQL Server especificada. Como no se especifica @retention_days, se utiliza el valor de la columna valid_through de la vista core.snapshots para determinar las filas del conjunto de recopilación que se pueden quitar.

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