我有一个 BizTalk 2013 R2 轮询 WCF-SQL 接收位置,该位置执行带有 READPAST 锁定提示的轮询数据可用语句。该语句在过去几个月中运行良好,但在被轮询的 SQL 2014 服务器升级到 CU6 后停止运行。现在,每个轮询间隔的事件日志中都充斥着以下警告消息:
您只能在 READ COMMITTED 或 REPEATABLE READ 隔离级别中指定 READPAST 锁
我尝试将 WCF 服务行为添加到接收位置以强制 DTC 事务上的 READ COMMITTED 隔离级别,但似乎轮询语句正在 DTC 范围之外执行。
我在 SQL 2014 CU5 服务器上针对数据库的单独副本测试了相同的应用程序,并且轮询工作没有警告。
有任何想法吗?
更新: 看起来将隔离级别设置为 Polled Data Available 语句的一部分允许 READPAST 提示起作用:
将事务隔离级别设置为已提交;Select count(*) From dbo.Table with(READPAST) where [Status] = 'READY'
但是,我仍然担心 SQL 可能不再遵守 DTC 事务中服务行为设置的隔离级别。