Хранимый процесс с зависанием обновления связанного сервера MSDTC PREEMPTIVE_COM_QUERYINTERFACE Ожидание (с EventID 4359) - PullRequest
0 голосов
/ 14 июня 2019

Хранимая процедура выполняет обновление связанного сервера внутри транзакции. Он хорошо работает для нескольких клиентских сред, за исключением одной конкретной клиентской среды.

Поведение заключается в том, что SP вызывается через пользовательский интерфейс ASP.net и зависает, пока не истечет время ожидания команды 30 секунд. Выполнение сценария sp_WhoIsActive показывает, что SP застрял в операторе UPDATE LS с wait_info из PREEMPTIVE_COM_QUERYINTERFACE.

Странно то, что после первоначального тайм-аута при повторной попытке операции в пользовательском интерфейсе она становится успешной. Но время ожидания снова всплывает время от времени без четкой картины.

Кажется, это связано с MSDTC из-за оператора, в котором происходит событие ожидания. Это может быть разрешение или параметр конфигурации, поскольку в других средах эта проблема не встречается. Но MSDTC, похоже, настроен правильно, поскольку иногда выполнение выполняется успешно. Кто-нибудь имеет опыт работы с этой информацией об ожидании PREEMPTIVE_COM_QUERYINTERFACE?

Базы данных для локальной и удаленной базы данных - это базы данных SQL Server 2008 R2, использующие собственный клиент SQL 10.0 для объекта LS.

Обновление: Мы проверили журналы приложений Windows и во время зависания SP; появляется это сообщение об ошибке.

СОБЫТИЕ ID 4359 MS DTC не может связаться с MS DTC в удаленной системе. MS DTC в первичной системе установил привязку RPC к MS DTC во вторичной системе. Однако вторичная система не создала обратную привязку RPC к основной системе MS DTC до истечения времени ожидания. Пожалуйста, убедитесь, что между двумя системами есть сетевое соединение. Особенности ошибок:

Проверка уже выполнена:

  1. Конфигурация MSDTC (т.е. разрешить входящий, разрешить исходящий и т. Д.)
  2. HKEY_CLASSES_ROOT CID на обеих машинах не идентичны

На компьютерах установлена ​​Symantec Endpoint Protection, поэтому мы выясняем, может ли это быть фактором.

1 Ответ

0 голосов
/ 25 июня 2019

Обновление для этого:

Мы проверили журналы приложений Windows на обеих машинах и выяснилось, что существует ошибка MSDTC с кодом события 4359.

«MS DTC не может связаться с MSDTC в удаленной системе.MS DTC в первичной системе установил привязку RPC к MS DTC во вторичной системе.Однако вторичная система не создала обратную привязку RPC к первичной системе MS DTC до истечения времени ожидания.Пожалуйста, убедитесь, что между двумя системами есть сетевое соединение.Особенности ошибок: ”

По-видимому, существует блокировка портов между Первичным MSDTC и Вторичным MSDTC, и мы подозреваем, что это может быть связано с установленной Symantec Endpoint Protection.Так что это просто проблема окружающей среды клиента, которая будет решена.

...