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 NULL
es , 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 NULL
es , 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 NULL
es , 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