Verknüpfte server konnte keine verteilte Transaktion beginnen, wenn die Abfrage innerhalb eines TransactionScope -
Ich habe eine Abfrage, die eine Verknüpfte server. Die Abfrage läuft wunderbar in SSMS und wenn umwickelt in C# unter Dapper
var conn = GetOpenConnection(connInitializer);
return query(conn);
produziert das erwartete Ergebnis. Jedoch, wenn ich den code in eine TransactionScope,
using (var trans = new TransactionScope())
{
var conn = GetOpenConnection(connInitializer);
var returnValue = query(conn);
trans.Complete();
return returnValue;
}
Ich bekam eine Fehlermeldung:
"Der Vorgang konnte nicht durchgeführt werden, da OLE DB-provider "SQLNCLI11" für den Verbindungsserver xxx war keine verteilte Transaktion beginnen."
Sollte ich ändern, einige SQL Server-Konfiguration diese Arbeit zu machen?
InformationsquelleAutor Wei Ma | 2013-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie die Ausführung der Abfrage innerhalb einer expliziten Transaktion, die Sie festlegen, dass die Abfrage folgt diese ACID-Eigenschaften. Sie müssen konfigurieren von Microsoft Distributed Transaction Coordinator (MSDTC) zum verwalten der Transaktion auf Datenquellen.
Da-Abfrage arbeitete ursprünglich außerhalb des Bereichs einer Transaktion, ich vermute, es ist eine einfache select. Wenn das der Fall ist, möchten Sie vielleicht zu prüfen, öffnen separate Anschlüsse für jede Datenquelle, laden die erforderlich Daten in der Anwendung Objekte Zusammenführen und von dort aus, um Ergebnisse zu produzieren.
Sonst, vorbereitet zu beheben MSDTC-Verbindungsprobleme und überwachung der Transaktion queue für verwaiste Transaktionen.
InformationsquelleAutor Bryan