我有一个BizTalk 2013 R2轮询WCF-SQL接收位置,它使用READPAST锁提示执行轮询数据可用语句。该声明在过去的几个月里工作得非常完美,但在将SQL 2014服务器轮询升级到CU6后,该声明停止工作。现在,事件日志中充斥着以下警告消息每次轮询间隔:SQL Server 2014可能的BizTalk WCF-SQL轮询问题CU6
只能指定在读的READPAST锁犯或重复读隔离级别
我尝试添加一个WCF服务行为到接收位置以在DTC事务上强制执行READ COMMITTED隔离级别,但似乎轮询语句正在DTC范围之外执行。
我对SQL 2014 CU5服务器上的单独数据库副本测试了相同的应用程序,并且轮询无任何警告地工作。
任何想法?
更新: 它看起来像设置隔离级别为轮询数据可用声明的一部分允许READPAST提示工作:
SET事务隔离级别READ COMMITTED; SELECT COUNT(*)FROM dbo.Table用(READPAST)凡[状态] = 'READY'
不过,我还是担心,SQL可能不再履行的隔离级别由服务行为设置在DTC交易中。
为什么你需要的READPAST锁提示呢? – Dijkgraaf
真相被告知,我不必使用READPAST,但轮询语句执行一个相当昂贵的锁识别存储过程。如果没有可用于轮询的记录,我宁愿不执行该程序。 可用的数据语句如下所示: 'select count(*)from dbo.Table r with(readpast)Where Status ='READY'' –