SQL Server 2014 CU6 可能出现 BizTalk WCF-SQL 轮询问题
Possible BizTalk WCF-SQL polling issue with SQL Server 2014 CU6
我有一个 BizTalk 2013 R2 轮询 WCF-SQL 接收位置,它执行带有 READPAST 锁定提示的轮询数据可用语句。该声明在过去几个月中一直运行良好,但在被轮询的 SQL 2014 服务器升级到 CU6 后停止运行。现在,事件日志在每个轮询间隔内都充斥着以下警告消息:
You can only specify the READPAST lock in the READ COMMITTED or REPEATABLE READ isolation levels
我尝试将 WCF 服务行为添加到接收位置以在 DTC 事务上强制执行 READ COMMITTED 隔离级别,但轮询语句似乎是在 DTC 范围之外执行的。
我在 SQL 2014 CU5 服务器上针对数据库的单独副本测试了相同的应用程序,轮询工作没有任何警告。
有什么想法吗?
更新:
将隔离级别设置为 Polled Data Available 语句的一部分似乎允许 READPAST 提示起作用:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
Select count(*) From dbo.Table with(READPAST) Where [Status] = 'READY'
但是,我仍然担心 SQL 可能不再遵守 DTC 事务中服务行为设置的隔离级别。
原始 SQL Server 2014 SP1 CU6 包含一个问题:
https://blogs.msdn.microsoft.com/sqlreleaseservices/cumulative-update-6-for-sql-server-2014-sp1/
您有三个选择:
Microsoft 似乎解决了一些问题,即在释放 SQL 连接 (kb3025845) 时无法重置隔离级别。这让我相信 CU6 的行为是故意的,我只是从一个错误中受益。民意调查数据有用对我来说仍然很奇怪。声明不支持 WCF 服务行为设置,但这也可能是有意为之。
我最后只是在 PolledDataAvailableStatement 中设置隔离级别以强制读取已提交隔离级别。
示例:
set transaction isolation level read committed;
Select count(*) From dbo.Table with(READPAST) Where [Status] = 'READY'
我有一个 BizTalk 2013 R2 轮询 WCF-SQL 接收位置,它执行带有 READPAST 锁定提示的轮询数据可用语句。该声明在过去几个月中一直运行良好,但在被轮询的 SQL 2014 服务器升级到 CU6 后停止运行。现在,事件日志在每个轮询间隔内都充斥着以下警告消息:
You can only specify the READPAST lock in the READ COMMITTED or REPEATABLE READ isolation levels
我尝试将 WCF 服务行为添加到接收位置以在 DTC 事务上强制执行 READ COMMITTED 隔离级别,但轮询语句似乎是在 DTC 范围之外执行的。
我在 SQL 2014 CU5 服务器上针对数据库的单独副本测试了相同的应用程序,轮询工作没有任何警告。
有什么想法吗?
更新: 将隔离级别设置为 Polled Data Available 语句的一部分似乎允许 READPAST 提示起作用:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED; Select count(*) From dbo.Table with(READPAST) Where [Status] = 'READY'
但是,我仍然担心 SQL 可能不再遵守 DTC 事务中服务行为设置的隔离级别。
原始 SQL Server 2014 SP1 CU6 包含一个问题: https://blogs.msdn.microsoft.com/sqlreleaseservices/cumulative-update-6-for-sql-server-2014-sp1/
您有三个选择:
Microsoft 似乎解决了一些问题,即在释放 SQL 连接 (kb3025845) 时无法重置隔离级别。这让我相信 CU6 的行为是故意的,我只是从一个错误中受益。民意调查数据有用对我来说仍然很奇怪。声明不支持 WCF 服务行为设置,但这也可能是有意为之。
我最后只是在 PolledDataAvailableStatement 中设置隔离级别以强制读取已提交隔离级别。
示例:
set transaction isolation level read committed;
Select count(*) From dbo.Table with(READPAST) Where [Status] = 'READY'