Среда: службы 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 + (чтобы упростить сценарий), как включить обычное соединение с базой данных в распределенную транзакцию?
Что еще мы пробовали:
редактировать:
— Мы не нашли настроек MSDTC, которые бы не воспроизводили проблему.
Задача ещё не решена.