Ich verwende SQL Server und ASP.NET. Ich habe folgende Funktion:
Using js = daoFactory.CreateJoinScope()
Using tran = New Transactions.TransactionScope()
'...
tran.Complete()
End Using
End Using
Die Ausnahme ' Der Transaktionsmanager hat die Unterstützung für Remote- / Netzwerktransaktionen deaktiviert. ' ist geworfen.
Beschreibung von JoinScope:
Public Class JoinScope
Implements IJoinScope
Implements IDisposable
'...
End Class
Ich habe auf diese Weise in einer anderen Anwendung mit derselben Umgebung ohne Probleme gearbeitet, aber hier habe ich dieses Problem. Was kann ich tun, um das Problem zu beheben?
asp.net
vb.net
transactionscope
Lajos Arpad
quelle
quelle
Antworten:
Stellen Sie sicher, dass der Dienst "Distributed Transaction Coordinator" sowohl auf der Datenbank als auch auf dem Client ausgeführt wird. Stellen Sie außerdem sicher, dass Sie "Netzwerk-DTC-Zugriff", "Remote-Client zulassen", "Eingehende / ausgehende zulassen" und "TIP aktivieren" aktivieren.
So aktivieren Sie den Netzwerk-DTC-Zugriff für MS-DTC-Transaktionen
Öffnen Sie das Snap-In "Komponentendienste".
Klicken Sie zum Öffnen von Komponentendiensten auf Start. Geben Sie im Suchfeld dcomcnfg ein und drücken Sie die EINGABETASTE.
Erweitern Sie die Konsolenstruktur, um den DTC (z. B. Lokaler DTC) zu suchen, für den Sie den Netzwerk-MS-DTC-Zugriff aktivieren möchten.
Klicken Sie im Menü Aktion auf Eigenschaften.
Klicken Sie auf die Registerkarte Sicherheit und nehmen Sie die folgenden Änderungen vor: Aktivieren Sie in den Sicherheitseinstellungen das Kontrollkästchen Netzwerk-DTC-Zugriff.
Aktivieren Sie in der Transaction Manager-Kommunikation die Kontrollkästchen Eingehende und Ausgehende zulassen.
quelle
Ich bekam dieses Problem zeitweise, ich hatte die Anweisungen hier und sehr ähnliche an anderer Stelle befolgt. Alles wurde richtig konfiguriert.
Diese Seite: http://sysadminwebsite.wordpress.com/2012/05/29/9/ hat mir geholfen, das Problem zu finden.
Grundsätzlich hatte ich doppelte CIDs für den MSDTC auf beiden Servern. HKEY_CLASSES_ROOT \ CID
Siehe: http://msdn.microsoft.com/en-us/library/aa561924.aspx Abschnitt Stellen Sie sicher, dass MSDTC ein eindeutiger CID-Wert zugewiesen ist
Ich arbeite mit virtuellen Servern und unser Serverteam verwendet gerne für jeden Server das gleiche Image. Es ist eine einfache Lösung und wir brauchten keinen Neustart. Der DTC-Dienst musste jedoch auf Automatisch gestartet und nach der Neuinstallation gestartet werden.
quelle
Ich hatte eine Speicherprozedur, die eine andere Speicherprozedur in "Verbindungsserver" aufruft. Wenn ich sie in ssms ausführe, war sie in Ordnung, aber wenn ich sie in einer Anwendung (By Entity Framework) aufrufe, wird dieser Fehler angezeigt. Dieser Artikel hat mir geholfen und ich habe dieses Skript verwendet:
Weitere Informationen finden Sie hier: Verbindungsserver: Der Partner-Transaktionsmanager hat die Unterstützung für Remote- / Netzwerktransaktionen deaktiviert
quelle
In meinem Szenario wurde die Ausnahme ausgelöst, weil ich versucht habe, eine neue Verbindungsinstanz in einem TransactionScope für eine bereits vorhandene Verbindung zu erstellen:
Beispiel:
quelle
Kommentar aus der Antwort : "Stellen Sie sicher, dass Sie für alle Datenbankaufrufe innerhalb der Transaktion dieselbe offene Verbindung verwenden. - Magnus"
Unsere Benutzer werden in einer separaten Datenbank gespeichert, die von den Daten abweicht, mit denen ich in den Transaktionen gearbeitet habe. Das Öffnen der Datenbankverbindung, um den Benutzer zu erhalten, verursachte diesen Fehler für mich. Das Verschieben der anderen Datenbankverbindung und der Benutzersuche außerhalb des Transaktionsbereichs hat den Fehler behoben.
quelle
Ich poste die folgende Lösung hier, weil ich nach einigem Suchen hier gelandet bin, also vielleicht auch andere. Ich habe versucht, mit EF 6 eine gespeicherte Prozedur aufzurufen, hatte jedoch einen ähnlichen Fehler, da für die gespeicherte Prozedur ein Verbindungsserver verwendet wurde.
Der Vorgang konnte nicht ausgeführt werden, da der OLE DB-Anbieter _ für den Verbindungsserver _ eine verteilte Transaktion nicht starten konnte
Der Partner-Transaktionsmanager hat die Unterstützung für Remote- / Netzwerktransaktionen deaktiviert *
Das Wechseln zu SQL Client hat mein Problem behoben, was mir auch bestätigte, dass es sich um eine EF-Sache handelt.
Vom EF-Modell generierter methodenbasierter Versuch:
ExecuteSqlCommand-basierter Versuch:
Mit:
Dieser Code kann gekürzt werden, aber ich denke, dass die Version etwas bequemer zum Debuggen und Durchgehen ist.
Ich glaube nicht, dass SQL Client unbedingt eine bevorzugte Wahl ist, aber ich fand, dass es sich zumindest lohnt, dies zu teilen, wenn jemand, der ähnliche Probleme hat, hier von Google gelandet wird.
Der obige Code ist C #, aber das Konzept des Versuchs, auf SQL Client umzuschalten, gilt weiterhin. Zumindest wird es diagnostisch sein, dies zu versuchen.
quelle
Wenn Sie in den Komponentendiensten keinen lokalen DTC finden konnten, versuchen Sie zunächst, dieses PowerShell-Skript auszuführen:
Und es scheint!
Quelle: Der Partner-Transaktionsmanager hat die Unterstützung für Remote- / Netzwerktransaktionen deaktiviert
quelle
Falls andere das gleiche Problem haben:
Ich hatte einen ähnlichen Fehler. Es stellte sich heraus, dass ich mehrere SQL-Anweisungen in Transaktionen verpackte, von denen eine auf einem Verbindungsserver ausgeführt wurde (Merge-Anweisung in einer EXEC (...) AT Server-Anweisung). Ich habe das Problem behoben, indem ich eine separate Verbindung zum Verbindungsserver geöffnet und diese Anweisung in einem try ... catch-Code gekapselt und dann die Transaktion für die ursprüngliche Verbindung abgebrochen habe, falls der catch ausgelöst wird.
quelle
Ich hatte die gleiche Fehlermeldung. Für mich ändert
pooling=False
zu;pooling=true;Max Pool Size=200
in der Verbindungszeichenfolge das Problem behoben.quelle
Ich hatte dieses Problem mit einem Verbindungsserver in SSMS, als ich versuchte, eine gespeicherte Prozedur zu erstellen.
Auf dem Verbindungsserver habe ich die Serveroption "Promotion bei verteilten Transaktionen aktivieren" in "Falsch" geändert.
Screenshot der Serveroptionen
quelle