AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehler bei Execute Block im Script
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei Execute Block im Script

Ein Thema von Lemmy · begonnen am 2. Feb 2011 · letzter Beitrag vom 2. Feb 2011
Antwort Antwort
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#1

Fehler bei Execute Block im Script

  Alt 2. Feb 2011, 12:42
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBObjects
Hallo,

habe das Problem, dass ein Änderungsscript bei der Ausführung in TIB_Script einen Fehler verursacht:

Code:
ISC ERROR CODE:335544333

ISC ERROR MESSAGE:
internal gds software consistency check (Too many savepoints (287), file: tra.cpp line: 2731)
Ursache ist ein Execute Block:
Code:
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
In Verbindung mit der Einstellung bei der Transaktion ServerAutoCommit=true - das bedeutet die Transaktion läuft mit dem Parameter "isc_tpb_autocommit" .

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
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#2

AW: Fehler bei Execute Block im Script

  Alt 2. Feb 2011, 14:14
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
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Fehler bei Execute Block im Script

  Alt 2. Feb 2011, 18:03
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
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#4

AW: Fehler bei Execute Block im Script

  Alt 2. Feb 2011, 20:02
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz