Возможная проблема с опросом 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/
У вас есть три варианта:
- установить исправленный CU6
- установить CU7: https://blogs.msdn.microsoft.com/sqlreleaseservices/cumulative-update-7-for-sql-server-2014-sp1/
- или установите пакет обновления 2: https://blogs.msdn.microsoft.com/sqlreleaseservices/sql-2014-service-pack-2-is-now-available/