Einzelnen Beitrag anzeigen

Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#1

ZEOS TZSqlProcessor verarbeitet MetaScript nicht komplett

  Alt 27. Jun 2009, 21:17
Datenbank: FireBird • Version: 2.x • Zugriff über: ZeosLib 6.6.5
Hallo,

z.Z. versuche ich die (FireBird) Datenbank-Tabellen, Trigger und CO. automatisch per MetaScript zu erstellen. Dazu verwende ich von Zeos den TZSqlProcessor.
Delphi-Quellcode:
function RunScript(AOwner : TComponent; Connection : TZConnection; Script : TStringList): String;
var
  SqlProcessor : TZSqlProcessor;
begin
  Result := '';
  SqlProcessor := TZSqlProcessor.Create(aOwner);
  try
    SqlProcessor.Connection := Connection;
    SqlProcessor.DelimiterType := dtSetTerm;
    SqlProcessor.Script.Assign(Script);
    try
      SqlProcessor.Execute;
    except
       on E:Exception do Result := E.Message;
    end;
  finally
    SqlProcessor.Free;
  end;
end;
Jetzt werden immer nur drei SQL Anweisungsblöcke abgearbeitet, beim 4. Anweisungsblock bricht TZSqlProcessor ab mit
Code:
SQL Error: Dynamic SQL Error SQL error code = -901 invalid transaction handle (expecting explicit transaction start). Error Code: -901. Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements The SQL: <Code der 4. SQL-Anweisung>
Die jeweilige SQL-Anweisung scheint irrelevant, da Umsortieren immer die Exception beim 4. Block auslöst (lege mein Test-Script trotzdem mal in die Anlage). TZSqlProcessor.Parse und anschließende Abfrage von Count gibt die korrekte Anzahl der Anweisungs-Blöcke wieder.

Ich bin mit dem Fehler etwas überfordert... scheinbar wird das Transaktions-Handle nach dem 3. Block geschlossen und führt dann beim 4. zum Fehler?

Die Tabellen lassen sich problemlos "einzeln" anlegen, also wenn ich für jede Tabelle und für jeden Trigger einen einzelnen Aufruf starte. Aber das kann ja nicht die Lösung sein...
Angehängte Dateien
Dateityp: txt database.meta.sql_197.txt (778 Bytes, 20x aufgerufen)
  Mit Zitat antworten Zitat