Environment: Win32 services dependent on a local SQL Server 2008 R2 service. No database mirroring, no remote resources. Several of the Win32 services have startup logic that involves calls to a COM+ service (transactions required) which accesses databases on the SQL Server (using msado15.dll, MDAC 2.8). During a normal system boot-up sequence, everything works perfectly.
Scenario: Manually restart only SQL Server. Because of the service dependencies, this restarts those additional Win32 services. Non-deterministically (in ~30% of SQL Server restarts), a call to _ConnectionPtr.Open
fails with HRESULT 0x8004d01c, which is XACT_E_CONNECTION_DOWN, message "Connection failure"; if the whole COM+ call is retried a few times, it eventually starts succeeding reliably. With most SQL Server restarts everything just works fine every time, same as with every full system boot-up.
What could cause this? How do I debug DTC? How can I get some insight into what's technically the root cause behind XACT_E_CONNECTION_DOWN? If I want to reproduce without any COM+ transactioning involved (so as to simplify the scenario), how do I enlist an ordinary database connection into a distributed transaction?
What else we tried:
Edit: - We found no MSDTC settings that would not reproduce the problem.
User contributions licensed under CC BY-SA 3.0