![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBObjects
Fehler bei Execute Block im Script
Hallo,
habe das Problem, dass ein Änderungsscript bei der Ausführung in TIB_Script einen Fehler verursacht:
Code:
Ursache ist ein Execute Block:
ISC ERROR CODE:335544333
ISC ERROR MESSAGE: internal gds software consistency check (Too many savepoints (287), file: tra.cpp line: 2731)
Code:
In Verbindung mit der Einstellung bei der Transaktion ServerAutoCommit=true - das bedeutet die Transaktion läuft mit dem Parameter "isc_tpb_autocommit" .
EXECUTE BLOCK AS BEGIN
if (not exists(select 1 from rdb$relations where rdb$relation_name = 'T_AQ_ASSQUARTAL')) then execute statement 'CREATE TABLE T_AQ_ASSQUARTAL ( T_AQ_PAT_ID DOM_ID, T_AQ_ASS_ID DOM_ID, T_AQ_CHIP_IK DOM_IK, T_AQ_QUARTAL DOM_ABR_CHECK, T_AQ_LEISTSUM DOM_INTEGER );'; END Folgendes habe ich auch noch herausgefunden: Lass ich nur diesen Execute-Block im Script laufen geht alles. Lass ich das komplette Script laufen gehts nicht. Schmeiße ich den Execute Block raus und lass nur das reine Create Table gehts auch (komplettes Script). Und noch was: die Position an der ich den Execute Block im Script ausführe ist auch egal - sprich, am restlichen Script sollte es daher nicht liegen. Kennt jemand das Problem? Oder hat jemand einen Tipp für mich? ServerAutoCommit darf ich leider nicht ändern.... Grüße |
AW: Fehler bei Execute Block im Script
Ist das EXECUTE BLOCK von dir das, was tatsächlich ausgeführt wird oder ist da vielleicht noch ein Exception Handling mit drin? Ich frage deshalb, weil es zu einem ähnlichen Thema im November 2010 einen Bugfix in der Engine gegeben hat.
Too many savepoints kann auch ganz allgemein das Ergebnis sein, wenn über die Zeit zu viele "Soft Commits" (aka COMMIT RETAINING) ausgeführt werden ohne von Zeit zu Zeit mal ein "echtes" Commit zu machen. Generell werden bei jeglichen AutoCommit = True Einstellungen diese Soft Commits verwendet, d.h. könnte auch ein Grund sein. Ich würde einfach mal im Skript auch explizite COMMITs reingeben. Welche 2.1er Version verwendest du genau? lg, Thomas |
AW: Fehler bei Execute Block im Script
Hallo Thomas,
das ist das reale Statement, ExceptionHandling lediglich das was IBObjects rund herum bietet - oder meinst Du was anderes? Soft Commits: Ja die eigentliche Anwendung arbeitet mit AutoCommit=true (leider schon vor meiner Zeit damit begonnen), da haben wir aber keinerlei Probleme damit. Innerhalb des Scripts sind auch div. COMMITS drin. Aber bzgl. Soft Commits - müssten diese Probleme denn nicht durch einen Backup-Restore Prozess mit eingeschalteter GarbageCollection behoben werden? Ich habe die 2.1.1.17910 am laufen - dann lade ich mir mal die aktuelle 2.1.3er herunter und schau was die sagt.... Grüße |
AW: Fehler bei Execute Block im Script
Hallo,
dass ein Backup/Restore das Problem mit Soft Commits behebt ist eine andere Geschichte. Sofern es sich um den erwähnten Bugfix handelt, dann wird dir ein Upgrade auf 2.1.3 nichts helfen, weil, so weit ich das sehe, der Bugfix nur im 2.5er Zweig enthalten ist. Ich würde mal folgendes versuchen: - Dein Skript mit isql und Firebird 2.1 ausführen. Dann weisst, ob es ein allgemeines Problem ist oder etwas mit IBO zu tun hat. - Das Ganze mal mit 2.5 ausprobieren. D.h. einfach ein Backup mit 2.1 ziehen und unter 2.5 restoren. lg, Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz