Announcement

Collapse
No announcement yet.

Distributed transaction completed. Either enlist this session ...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Distributed transaction completed. Either enlist this session ...

    Hallo,

    Ich habe Com+ Anwendung(W2000). Die Funktion ruft eine gespeicherte Prozedur in der MS SQL Server 7.0. Die erzeugt neue Zeile in der Tabelle mit neuen Daten. Nichts kompliziertes, aber manchmal kriege ich die Fehlermeldung "Distributed Transaction Completed. Either enlist this
    session in a new Transaction or the NULL Transaction" . Voran könnte es liegen: COM+ Anwendung oder an gespeicherte Prozedur. sie ist aber einfach
    <PRE>
    ...
    BEGIN TRANSACTION
    INSERT INTO TABLE1 (param1, ...)
    VALUES ('123', ....)
    COMMIT TRANSACTION
    ...
    </PRE>

    Einstellung für Komponenten in COM+Anwendungen: Transaction(Erfordert neu), Synchronisierung(Erforderlich), Threadingmodel(Singlethread-apartment).
    Danke.

  • #2
    Hallo,

    wenn das COM+-Objekt die Eigenschaft <i>Transaction(Erfordert neu)</i> aktiviert, wird der Datenbankzugriff im Kontext einer <b>deklarativen DTC-Transaktion</b> (Distributed Transaction Coordinator von Windows) ausgeführt. In diesem Fall überstimmt der DTC jede <b>zusätzlich</b> in T-SQL formulierte Transaktion (BEGIN TRANSACTION .. COMMIT TRANSACTION), so dass die separate Transaktionssteuerung innerhalb der gespeicherten Prozedur unnötig ist und zudem eine zusätzliche Fehlerquelle darstellt.

    Kurz zusammengefasst, gilt die folgende Regel: Nur dann über SQL die Transaktionssteurung selbst übernehmen, wenn <b>keine</b> deklarative Transaktion von COM+ verwendet wird.

    In meinem Buch <i>ADO und Delphi</i> gehe ich im Abschnitt <i>9.6 Nested Transactions und COM+</i> auf den Seiten 441 bis 450 auf diesen Sonderfall ein. Wie das dort vorgestellte Beispielprojekt und die Abbildung 9.17 zeigt, nimmt ein COM+-SetAbort alle Anweisungen zurück, obwohl die Stored Procedure bereit COMMIT TRANSACTION aufgerufen hatte.

    Comment

    Working...
    X