Purgar tablas relacionadas con otros trabajos
Actualizado: 2009-04-30
El Servicio proceso de planeación procesa registros en la tabla AsyncWorkItems. Esta tabla contiene los elementos de trabajo que el Servicio proceso de planeación ha procesado, así como los elementos que continúan en cola y que Servicio proceso de planeación va a procesar.
Los datos de esta tabla y su tabla relacionada (AsyncWorkItemStatusHistory) no se purgan mediante ningún proceso de planeación. El administrador de la base de datos debe supervisar el tamaño de la tabla AsyncWorkItems y purgarla con regularidad. Aquí se describe un procedimiento almacenado para realizar dicha purga.
Existen otras muchas tablas que hacen referencia a los registros de la tabla AsyncWorkItems. El procedimiento almacenado bsp_AsyncWorkItemsPurge instalado en la base de datos de la aplicación sólo purga los registros a los que ninguna de estas tablas hace ya referencia, así como los registros que son anteriores a una fecha determinada.
AsyncWorkItemID en la tabla AsyncWorkItems es una clave externa a la que hacen referencia las siguientes tablas:
RecurrentCycle (AutoStartTimerID),
CycleInstances (AutoStartTimerID, AutoEndTimerID),
Assignments (AutoStartTimerID, AutoEndTimerID),
JobInstances (WorkItemID)
La tabla AsyncWorkItems y los datos de tabla asociados a ésta sólo se pueden eliminar si ninguno de ellos hace referencia a AsyncWorkItemID y si ItemEndDatetime es anterior a una fecha u hora en concreto.
El siguiente código es la secuencia de comandos mediante la que se ejecuta este procedimiento almacenado. En este ejemplo se muestra cómo purgar todos los registros de AsyncWorkItems (y la tabla AsyncWorkItemStatusHistory asociada) cuando la columna ItemEndDatetime es anterior a 2007, y sólo se purgarán aquellos registros a los que ninguna otra tabla haga referencia.
DECLARE @RET int
EXEC @RET = bsp_AsyncWorkItemsPurge @PurgeDatetime = ‘12/31/2006’
SELECT @RET