【发布时间】:2014-09-30 04:02:55
【问题描述】:
我的 WCF_SQL 接收位置轮询有一个奇怪的问题。 BizTalk 服务器是 BizTalk 2010。轮询每 1 分钟执行一次,涉及执行一个 Stored_Proc 从表中选择记录并将所选记录状态更新为“处理中”
Select top 10 * from ProcessingTable where Status = 'New'
Update ProcessingTable Set Status = 'Processing' where Status = 'New'
接收管道是 XMLReceive,它将分批记录并路由到另一个编排进行处理。在编排结束时,将有一个发送端口,用于将状态更新为“已处理”。
问题来了,在我们进行维护和 BizTalk DB/应用程序服务器关闭期间,主机实例将关闭,这些记录将停留在“新”状态。在初始化维护和主机实例后,这些记录将立即被提取并将其状态更新为“处理中”。奇怪的是,它一直停留在这种状态,并且永远不会继续更新为“已处理”。这只发生在前 10 条记录(第一次提取/提取)。随后,所有其他剩余的“新”记录都被拾取并成功处理。目前的解决方法是始终监控那些卡在“处理”中的记录,并再次将这些记录更新为“新”以重新触发处理。谁有这个问题的答案?
【问题讨论】:
-
这在很大程度上取决于您的具体解决方案。在我看来,将您的状态更新为“已处理”的发送端口没有被触发。您能否通过查看跟踪来仔细检查此发送端口是否被触发?如果是:请检查是否使用正确的参数触发。
-
您的第二条 sql 语句将导致前 10 名之外的所有记录都设置为“处理”,这意味着您的轮询过程将不再在后续循环中提取它们。
标签: biztalk