BizTalk 2010 WCF-SQL适配器XML轮询问题



在一组接收位置上使用WCF-SQL适配器时,我有一个奇怪的问题,我以前没有见过。

设置是一个接收端口在BizTalk 2010与3个独立的接收位置。每个接收位置使用不同的参数调用相同的存储过程,执行语句如下所示:

EXEC dbo.StoredProc 'WELLNESS'
EXEC dbo.StoredProc 'DIABETES'
EXEC dbo.StoredProc 'SCREENINGS'

存储过程在传递参数时完全按照预期工作,并使用FOR XML PATH返回XML。这里一切正常。

我遇到的问题似乎是关于这些接收位置的pollDataAvailableStatement。无论我做什么,所有3个进程都返回一个"1"给BizTalk,这将启动所有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。我试图将pollwhiledatfound设置为True和False,并注意到相同的行为。轮询间隔为600秒(我也尝试过3600秒)。所有SQL超时时间为40分钟。

所以显然这是发生的,因为我有useAmbientTransaction标志设置为false在接收位置。我将标志设置为false的原因是因为当它设置为true时,我正在获得数据库无法到达的错误,和/或消息是关闭的错误。这种情况经常发生,因为该设置似乎有问题。

简而言之,Ambient Transactions会导致错误,所以我关闭了它。这导致pollDataAvailableStatement被跳过,EXEC语句在每个轮询间隔运行。我正在调用的存储过程有一个参数,因此我更改了exec语句,以使用参数名称和值:

EXEC dbo.StoredProc @FeedType='DIABETES'

这修复了环境事务错误的问题,我能够将该标志设置回true,现在pollDataAvailableStatement按预期工作。

最新更新