Da ich beim letzten Mal auf das Problem der Verarbeitung von Transaktionen im Webservice gestoßen bin, habe ich beim Debuggen des Programms versehentlich eine interessante Entdeckung über die Einstellung für die Verbindungszeichenfolge-Eintragung von OracleConnection gemacht.
Ich habe schon einmal einen Artikel gelesen, aber ich kann mich nicht erinnern, was es war. In dem Artikel stand, dass es am besten ist, „enlist“ auf „false“ zu setzen mein Programm, enlist=false wurde direkt geschrieben. Erst jetzt habe ich herausgefunden, dass es einen subtilen Zusammenhang zwischen der Einstellung von Enlist und der Verarbeitung von Transaktionen gibt.
Transaktionsmanager verwenden im Allgemeinen zwei Methoden zur Verwaltung: eine heißt Lightweight Transaction Management (LTM) und die andere heißt oleX TM. Bei der einfachen Phasenübermittlung wird im Allgemeinen LTM verwendet, während bei der verteilten Transaktionsverarbeitung im Allgemeinen 2PC verwendet wird, sodass die verwendete Methode oleX TM ist.
Wenn enlist=false, bedeutet dies, dass nachfolgende Transaktionen nicht in der aktuellen Transaktion registriert werden, sodass die aktuelle Transaktion nicht zum Stamm der Transaktion wird. Wenn im Programm verteilte Transaktionsverarbeitung verwendet wird, kann es sein, dass diese nicht korrekt ausgeführt wird (ich habe dies nicht getestet). Zu diesem Zeitpunkt weist das Programm TM an, LTM zur Verwaltung zu verwenden.
Wenn enlist=true, teilt der Prozess TM mit, dass es mit oleX TM verwaltet werden muss. Die verteilte Transaktionsverwaltung wird zu diesem Zeitpunkt automatisch aktiviert. Wenn also enlist=true in der Verbindungszeichenfolge festgelegt ist, wird bei Verwendung der Oracle-Datenbank Folgendes angezeigt: dann wird der Hintergrund angezeigt. Wenn oramts.dll aufgerufen wird und der MTS für Oracle-Dienst nicht in der Entwicklungsumgebung installiert ist, wird angezeigt, dass oramts.dll nicht gefunden werden kann. Sie können das Installationspaket dieses Dienstes von der Website von Oracle herunterladen. Ich weiß nicht, warum Oracle kein separates Installationspaket bereitstellt, sondern es gebündelt mit odac herunterlädt.
Was passiert, wenn Sie Enlist nicht konfigurieren? Dies hängt davon ab, ob Ihr Programm verteilte Transaktionen oder allgemeine Transaktionsverarbeitung verwendet. TM reagiert automatisch entsprechend der Programmanforderung.
Fazit: Enlist hat eine gewisse Kontrolle über die Registrierung von Transaktionen. Wenn meine Beschreibung falsch ist, helfen Sie mir bitte, mich zu korrigieren.
Linkadresse: http://yanrongpi.cnblogs.com/archive/2006/07/13/450189.html