清除其他作业相关表

更新: 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

另请参阅