MSSQL unvollständige Daten geschrieben



  • Ich habe beim Import von (Text)Daten in die Datenbank ein Problem:

    Alle Import-Daten werden zunächst in einer Zwischentabelle (enthält die Rohdaten als LONG VARCHAR bzw. VARCHAR(MAX), einen Fehlerstatus und einen Verweis auf den aufbereiteten Datensatz) gespeichert und anschließend interpretiert und in die Nutzdaten-Tabelle geschrieben:

    iSelect.Execute( "
      SELECT id,daten,...
      INTO :nId,:sDaten,...
      FROM import
      WHERE tgtid IS NULL and fehler IS NULL" )
    while( iSelect.Next() )
      //interpretiere sDaten, setzt ok=false bei Fehlern
      nTgtId = neuer_schluessel()
    
      ok = ok && iInsert.Execute( "INSERT INTO nutzdaten (id,...) VALUES (:nTgtId,...)" )
      //  :warning: 
      if( ok )
        iUpdate.Execute( "UPDATE import SET tgtid=:nTgtId WHERE id=:nId" )
        Commit()
      else
        Rollback()
        iUpdate.Execute( "UPDATE import SET fehler=1 WHERE id=:nId" )
        Commit()
    

    Aus irgendeinem Grund wird das Programm jetzt an der Stelle ⚠ abgebrochen (ich bin noch am Suchen, warum das passiert) und nach dem Neustart wird der selbe Datensatz noch einmal verarbeitet, was bei der Interpretation zu einem Fehler führt. Das heißt, ich habe den importierten Datensatz, aber das Import-Programm weiß nichts davon.
    (an anderen Stellen bezieht sich das System auch auf diese Verknüpfung, um Daten auszuwerten oder besonders zu behandeln)

    PS: Außerdem ist das Nutzdaten-Objekt an der Stelle ⚠ noch nicht vollständig, weil dahinter noch weitere INSERT-Anweisungen für Sub-Tabellen folgen, die durch den Absturz auch nicht ausgeführt wurden.


Anmelden zum Antworten