Announcement

Collapse
No announcement yet.

Fehlerhafte Transaktionssteuerung bei NT4.0

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

  • Fehlerhafte Transaktionssteuerung bei NT4.0

    <b>Hallo,</b>

    <i>Ich habe folgendes Problem:</I><br>
    Eine Anwendung, die ohne Probleme funktioniert macht Fehler beim Betrieb unter WinNT4.0. Datenbankoperationen, die mit Transaktionen realisiert sind, werden fehlerhaft ausgeführt. Dabei gehen vollkommen ohne Zusammenhang Datensätze verloren.<br>
    In dem Delphi-Buch <i>"Client/Server"</i> von Andreas Kosch wird diese Problematik zwar angesprochen, aber die Gegenmaßnahmen wirken bei meiner Anwendung nicht. Jedenfalls bleiben die Fehler bestehen, aber nur bei NT!

    <i><b>Ich bitte dringend um Tips, da mich dieser Zustand meiner Software zum verzweifeln bringt und ich die Transaktionen kaum ausbauen kann.</b>
    </i>
    <b>Vielen Dank
    </B>
    Dominik

  • #2
    Hallo,

    was bedeutet "...gehen... Datensätze verloren" und um welche Datenbank handelt es sich? Nur die SQL-Server unterstützen echte Transaktionen, die meisten anderen (Paradox, dBASE, ACCESS usw.) simulieren nur welche.

    Falls ein SQL-Server eingesetzt wird, handelt es sich um direkte Datenbanktransaktionen (die vom eigenen Programm gezielt gesteuert werden) oder um deklarative Transaktionen (Anwendung läuft als COM-Objekt im Microsoft Transaction Server)?

    Falls eine ISAM-Datenbank (Paradox, dBASE etc.) eingesetzt wird, würde ich nach jedem Speichern eines Datensatzes (Post) die IDAPI-Funktion <b>DbiSaveChanges</b> (Unit BDE) aufrufen:
    <pre>
    Check(DbiSaveChanges(Table1.Handle));
    </pre>
    Wird auf die ISAM-Datenbank a) lokal oder b) im Netzwerk zugegriffen? Im Fall von b), stimmen auch die Einstellungen für LOCAL SHARE, NET DIR usw.

    Comment


    • #3
      Hallo Herr Kosch,<br><br>
      <b>Vielen Dank für Ihre Hilfe!!!</b><br><br>
      ich verwende Paradox-Tabellen, die auf einem Server liegen. Die Arbeitsstationen greifen dann darauf zu.<br>
      Wenn jetzt Datensätze gelöscht werden, dann werden in vielen Tabellen abhängige Sätze mitgelöscht. Dabei bleiben manchmal aber Sätze stehen. Umgekehrt werden bei einem Rollback scheinbar nicht alle Sätze wieder hergestellt. <br>
      Auch wenn neue Sätze angelegt werden, kommt es vor, das Sätze verloren gehen, also nicht alle Sätze die geschrieben wurden, anschließend in der Tabelle stehen. <br>
      <br>
      LOCAL SHARE, NET DIR usw. habe ich gecheckt und ich denke, daran kann es nicht liegen. <br>
      Ich were mal den <b>DbiSaveChanges</b> ausprobieren. Ich hoffe das führt zum Erfolg. Gibt es irgendwelche Updates für die BDE oder NT für diese Problem, oder läßt sich das Problem zuverlässig durch prüfen allerEinstellungen in den Griff kriegen. <br> Die Alternative wäre sonst nur noch die Transaktionen zu entfernen, oder ?!?
      <br&gt

      Comment


      • #4
        Hallo,

        im Fall von Paradox <b>simuliert</b> die BDE die Transaktionen nur, indem alle Änderungen in einer temp. Hilfstabelle mitprotokolliert werden. Somit wandert jeder gelöschte Datensatz vorher als Kopie in diese Hilfstabelle. Bei einem ROLLBACK versucht nun die BDE, alle in dieser temp. Hilfstabelle vorgefundenen Datensätze wieder in die originale Tabelle einzufügen. Allerdings hängt Erfolg und Misserfolg stark von der Tabellenstruktur und sonstigen Bedingungen (Eingabeprüfungen, referenzielle Integrität usw.) ab.

        Wenn sichere Transaktionen benötigt werden, muss eine SQL-Datenbank her. Und da seit einigen Tagen der InterBase nun endlich Open Source ist, gibt es auch kein Kostenargument mehr gegen SQL-Server ;-

        Comment

        Working...
        X