清除其他作业相关表
更新: 2009-04-30
规划流程服务会处理 AsyncWorkItems 表中的记录。此表包含规划流程服务已处理过的工作项,以及仍在队列中并将由规划流程服务处理的项。
此表的数据及其相关的表 (AsyncWorkItemStatusHistory) 不会被任何规划过程清除。数据库管理员应监视 AsyncWorkItems 表的大小并定期清除它。我们提供了一个存储过程来执行这一清除操作。
有几个其他表引用 AsyncWorkItems 表中的记录。安装在应用数据库中的存储过程 bsp_AsyncWorkItemsPurge 只清除不再由其中任何表引用的记录以及早于某个日期的记录。
AsyncWorkItems 表中的 AsyncWorkItemID 是以下各表引用的外键:
RecurrentCycle (AutoStartTimerID),
CycleInstances (AutoStartTimerID, AutoEndTimerID),
Assignments (AutoStartTimerID, AutoEndTimerID),
JobInstances (WorkItemID)
AsyncWorkItems 表及其关联的表数据只有在它们都不引用 AsyncWorkItemID 时以及 ItemEndDatetime 早于某个日期时间时才能删除。
下面的代码是用于执行此存储过程的脚本。此示例显示如何清除 ItemEndDatetime 列早于 2007 年的所有 AsyncWorkItems(和相关的 AsyncWorkItemStatusHistory 表)记录以及只清除任何其他表都不引用的记录。
DECLARE @RET int
EXEC @RET = bsp_AsyncWorkItemsPurge @PurgeDatetime = ‘12/31/2006’
SELECT @RET