【发布时间】:2014-06-24 15:53:47
【问题描述】:
在一组接收位置上使用 WCF-SQL 适配器时,我遇到了一个以前从未见过的奇怪问题。
设置是 BizTalk 2010 中的一个接收端口,具有 3 个单独的接收位置。每个接收位置调用相同的存储过程,但参数不同,执行语句如下所示:
EXEC dbo.StoredProc 'WELLNESS'
EXEC dbo.StoredProc 'DIABETES'
EXEC dbo.StoredProc 'SCREENINGS'
在传递参数并使用 FOR XML PATH 返回 XML 时,存储过程完全按照预期工作。这里一切正常。
我遇到的问题似乎与这些接收位置中的 pollDataAvailableStatement 有关。无论我做什么,这 3 个都向 BizTalk 返回一个“1”,这将启动所有 3 个进程。轮询语句如下:
SELECT Count(1) FROM XXX.XXXXTable WHERE File_Type = 'TP - GAPS IN CARE DIABETES' AND File_Status = 'READY'
SELECT Count(1) FROM XXX.XXXXTable WHERE File_Type = 'TP - GAPS IN CARE WELLNESS' AND File_Status = 'READY'
SELECT Count(1) FROM XXX.XXXXTable WHERE File_Type = 'TP - GAPS IN CARE SCREENINGS' AND File_Status = 'READY'
因此,当我在表中适当地设置标志时,它会轮询以查看它是否应该运行并返回 true 以执行存储的过程。即使我只为数据库中的 WELLNESS 接收位置设置了标志,轮询语句对所有 3 个都返回 true,我对为什么感到困惑。我以前从未遇到过这种情况,并且我在许多其他 BizTalk 应用程序中使用相同的设置,没有任何问题。
其他信息,我正在使用 XmlPolling。我尝试将 pollWhileDataFound 设置为 True 和 False 并注意到相同的行为。轮询间隔是 600 秒(我也试过 3600 秒)。并且所有的 SQL 超时都是 40 分钟。
【问题讨论】:
标签: wcf sql-server-2008 biztalk biztalk-2010