Возможная проблема с опросом BizTalk WCF-SQL в SQL Server 2014 CU6

У меня есть местоположение получения WCF-SQL для BizTalk 2013 R2, в котором выполняется оператор Polled Data Available с подсказкой блокировки READPAST. Заявление работало безупречно в течение последних нескольких месяцев, но перестало работать после обновления опрашиваемого сервера SQL 2014 до CU6. Теперь журнал событий заполняется следующим предупреждением каждый интервал опроса:

Вы можете указать блокировку READPAST только в уровнях изоляции READ COMMITTED или REPEATABLE READ

Я попытался добавить поведение службы WCF в место получения, чтобы принудительно установить уровень изоляции READ COMMITTED для транзакции DTC, но может показаться, что оператор опроса выполняется вне области действия DTC.

Я протестировал одно и то же приложение на отдельной копии базы данных на сервере SQL 2014 CU5, и опрос работает без предупреждений.

Есть идеи?

Обновление: похоже на то, что установка уровня изоляции как части оператора Polled Data Available позволяет подсказке READPAST работать:

УСТАНОВИТЕ УРОВЕНЬ ИЗОЛЯЦИИ СДЕЛКИ СДЕЛКИ; Выберите количество (*) в dbo.Table с помощью (READPAST), где [Status] = 'READY'

Тем не менее, я все еще обеспокоен тем, что SQL больше не может соблюдать уровень изоляции, установленный поведением службы в транзакции DTC.

2 ответа

Решение

Похоже, что Microsoft исправила некоторые проблемы с уровнями изоляции, которые не могут быть сброшены при освобождении SQL-соединения ( kb3025845). Это заставляет меня верить, что поведение CU6 является преднамеренным, и я просто извлек выгоду из ошибки. Мне все еще кажется странным, что опрошенные данные помогают. оператор не учитывает настройки поведения службы WCF, но это также может быть преднамеренным.

В итоге я просто установил уровень изоляции в PolledDataAvailableStatement, чтобы принудительно зафиксировать уровень изоляции.

Пример:

set transaction isolation level read committed;
Select count(*) From dbo.Table with(READPAST) Where [Status] = 'READY'

Исходный CU6 SQL Server 2014 с пакетом обновления 1 (SP1) содержит проблему: https://blogs.msdn.microsoft.com/sqlreleaseservices/cumulative-update-6-for-sql-server-2014-sp1/

У вас есть три варианта:

Другие вопросы по тегам