XACT_E_CONNECTION_DOWN после перезапуска SQL Server

Среда: службы Win32 зависят от локальной службы SQL Server 2008 R2. Нет зеркального отображения базы данных, нет удаленных ресурсов. Некоторые из служб Win32 имеют логику запуска, которая включает вызовы службы COM + (требуются транзакции), которая обращается к базам данных на SQL Server (используя msado15.dll, MDAC 2.8). Во время обычной загрузки системы все работает отлично.

Сценарий: перезапустите вручную только SQL Server. Из-за служебных зависимостей это перезапускает эти дополнительные службы Win32. Недетерминированный (в ~ 30% перезапусков SQL Server) вызов _ConnectionPtr.Open терпит неудачу с HRESULT 0x8004d01c, который является XACT_E_CONNECTION_DOWN, сообщение «Ошибка подключения»; если весь вызов COM + повторяется несколько раз, он в конечном итоге начинает работать успешно. При большинстве перезапусков SQL Server все просто работает каждый раз, как и при полной загрузке системы.

Что может вызвать это? Как мне отладить код неисправности? Как я могу получить представление о том, что технически является основной причиной XACT_E_CONNECTION_DOWN? Если я хочу воспроизвести без какой-либо транзакции COM + (чтобы упростить сценарий), как включить обычное соединение с базой данных в распределенную транзакцию?

Что еще мы пробовали:

  • Та же проблема может возникнуть (с аналогичной вероятностью), даже если
    Служба SQL Server зависит от службы MSDTC и
    Служба MSDTC перезапускается вместе со всеми ее зависимостями.
  • Помните, что это можно независимо наблюдать в более чем одном сервисе. Если проблема возникает в службе с повторным циклом (повторная попытка всего вызова COM +) и, в конечном счете, устраняется, другая служба все еще может временно иметь такую ​​же проблему во время своего запуска, даже если это было спровоцировано тем же запуском SQL Server. Поэтому это не может быть так просто, как SQL Server, который не был готов к общению с DTC до некоторого момента.
  • Ничего необычного в журналах событий Windows, SQL Server и MSDTC. Похоже, что распределенная транзакция была прервана новичком.

редактировать:
— Мы не нашли настроек MSDTC, которые бы не воспроизводили проблему.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]