In unserer Anwendung verwenden wir TransactionScope. Wir möchten den MSDTC-Dienst nicht nutzen, da er viel langsamer ist als einfache Transaktionen.
using (var transactionScope = new TransactionScope())
{
...
transactionScope.Complete();
}
Während wir mit der Testdatenbank verbunden sind, benötigen wir kein MSDTC, aber genau derselbe Code, der auf demselben Computer ausgeführt wird, eskaliert, um MSDTC zu verwenden, wenn eine Verbindung mit der Produktions- oder Entwicklungsdatenbank besteht.
Die Entwicklungsdatenbank ist nicht geclustert und keine benannte Instanz.
Alle sind SQL Server 2008 (10.50.2500) und die Verbindungszeichenfolgen sind bis auf die Hostnamen genau gleich.
Es scheint, dass es einen Unterschied in der Einrichtung der Datenbanken geben muss. Irgendwelche Ideen, was das sein könnte?
BEARBEITEN
Die Transaktion diente dazu, Einfügungen in zwei verschiedenen Tabellen zu schützen. Ich bemerkte, dass es auch zwei Anrufe gab, die zu zwei Auswahlen führten. Diese mussten nicht in der Transaktion enthalten sein, daher habe ich sie außerhalb der Transaktion verschoben. Der Bedarf an MSDTC verschwand dann in allen drei Datenbanken. Problem gelöst, aber ohne wirklich zu wissen, was es verursacht hat.