Announcement

Collapse
No announcement yet.

Transaktionsproblem?

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

  • Transaktionsproblem?

    D5 + SP1, Win2000, ADO, MS-SQL-Server 2000<br>
    <br>
    Hallo,<br>
    ich bekomme folgende Fehlermeldung bei dem Versuch eine Datenmenge zu speichern bzw. zurückzusetzen:<br>
    <b>ITransaction::Commit oder ITransaction::Abbruch wurde aufgerufen, und das Objekt stillgelegt</b><br>
    <br>
    Was ist damit wohl gemeint?<br>
    <br>
    Gruß,<br>
    Christian

  • #2
    Hallo,

    das ist eine sehr ungewöhntliche Fehlermeldung. Wird der ODBC-Treiber genutzt oder der OLE DB Provider?

    Aus der Hilfedatei vom <i>Microsoft Platform SDK</i> stammt der folgende Hinweis: "<i>Consumers that use the ODBC Provider should be aware of the ITransaction::Abort and ITransaction::Commit error XACT_E_CANTRETAIN, which specifies that retaining abort and commit operations are not supported and that the specified abort or commit succeeded, leaving the session in auto-commit mode. After receiving this error, consumers should check for extended error information. If extended error information is available, consumers should call ITransaction::GetTransactionInfo to determine the current transaction mode (manual-commit or auto-commit); there might be some cases in which the ODBC Provider cannot put the session in auto-commit mode despite the information implied in the XACT_E_CANTRETAIN error.</i>".

    Welche Aktionen zeichnet der <i>Profiler</i> vom MS SQL Server auf, wenn die vom Client zum Server geschickten Kommandos überwacht werden

    Comment


    • #3
      Hallo,<br>
      es wird der OLE DB Provider genutzt.<br>
      Im Profiler ist nichts auffälliges zu sehen.<br>
      Folgende Einträge sind zu sehen, wenn der DS gespeichert werden soll:<br>
      <pre>
      TransactionLog HADES Chr Schankweiler SERVER\Chr Schankweiler 280 53 2004-02-05 14:57:37.577
      SQLTransaction HADES Chr Schankweiler SERVER\Chr Schankweiler 0 280 53 2004-02-05 14:57:37.577
      TransactionLog HADES Chr Schankweiler SERVER\Chr Schankweiler 280 53 2004-02-05 14:57:37.577
      TransactionLog HADES Chr Schankweiler SERVER\Chr Schankweiler 280 53 2004-02-05 14:57:37.577
      Lock:Released HADES Chr Schankweiler SERVER\Chr Schankweiler 280 53 2004-02-05 14:57:37.577
      Lock:Released HADES Chr Schankweiler SERVER\Chr Schankweiler 280 53 2004-02-05 14:57:37.577
      Lock:Released HADES Chr Schankweiler SERVER\Chr Schankweiler 280 53 2004-02-05 14:57:37.577
      SQL:StmtCompleted COMMIT TRAN HADES Chr Schankweiler SERVER\Chr Schankweiler 0 0 0 0 280 53 2004-02-05 14:57:37.577
      SQL:StmtStarting HADES Chr Schankweiler SERVER\Chr Schankweiler 280 53 2004-02-05 14:57:37.577
      SQL:StmtCompleted HADES Chr Schankweiler SERVER\Chr Schankweiler 0 0 0 0 280 53 2004-02-05 14:57:37.577
      SQL:BatchCompleted IF @@TRANCOUNT > 0 COMMIT TRAN HADES Chr Schankweiler SERVER\Chr Schankweiler 0 0 0 0 280 53 2004-02-05 14:57:37.577
      Lock:Acquired sa 0 0 11 2004-02-05 14:57:38.390
      Lock:Acquired sa 0 0 11 2004-02-05 14:57:38.390
      Lock:Released sa 0 11 2004-02-05 14:57:38.390
      Lock:Released sa 0 11 2004-02-05 14:57:38.390
      Lock:Acquired sa 0 0 12 2004-02-05 14:57:43.397
      Lock:Acquired sa 0 0 12 2004-02-05 14:57:43.397
      Lock:Acquired sa 0 0 12 2004-02-05 14:57:43.397
      Lock:Released sa 0 12 2004-02-05 14:57:43.397
      Lock:Released sa 0 12 2004-02-05 14:57:43.397
      Lock:Acquired sa 0 0 5 2004-02-05 14:57:48.403
      </pre>
      <br>
      <br>
      Gruß,<br>
      Christia

      Comment


      • #4
        Voraussetzungen: Windows 2000, Delphi 7, MSDE, ADO

        Hallo,

        nach der Umstellung von einer MSACESS-Datenbank auf eine MSDE 2000 Version führt der
        Transaktionsaufruf mit Hilfe von ADOConnection.Begintrans zu der Fehlermeldung:

        "Es kann keine neue Transaktion gestartet werden, da die Kapazität erschöpft ist."

        Der Wert von ADOConnection.InTransaction ist eine Programmzeile zuvor mit "false" ermittelt worden.

        Was ist bei der ADOConnection-Komponente (oder sonstiges) zu ändern, um auch weiterhin mit den
        ADO-Transaktionen (BeginTrans, CommitTrans, RollbackTrans) zu arbeiten?

        Vielen Dank für die Mühe.

        Mit freundlichen Grüßen

        Dieter Huttanu

        Comment


        • #5
          Hallo,

          &gt;"Es kann keine neue Transaktion gestartet werden, da die Kapazität erschöpft ist."

          wie sieht ein kurzes Beispielprojekt aus, mit dem dieser Effek jederzeit reproduziert werden kann? Wie viele aktive Verbindungen zeigt die Leistungsanzeige (Perfmon.exe) von Windows an, wenn der Leistungsindikator <b>SQLServer:Allgemeine Statistik | Benutzerverbindungen</b> aktiviert wird

          Comment

          Working...
          X