Mahlzeit zusammen.
Ich habe ein Problem und bin langsam am verzweifeln, seit einer Woche durchforste ich jetzt schon das Internet, habe aber bisher keine zufriedenstellende Antwort zu meinem Problem gefunden.
Mein Problem ist folgendes:
Ich muss für ein Projekt (unter anderem) .sql-Dateien in mein Programm einlesen und diese an den
SQL-Server übermitteln, der diese dann verarbeitet (Stichwort
Query Analyzer). Die Scripts selbst können mehrere hundert Zeilen lang sein und sollten theoretisch keine Ergebnismenge zurückliefern.
Es soll ein Copy-Paste-Programm werden, deshalb benutze ich
ADO um keine zusätzlichen Treiber oder Software wie die
BDE etc. auf den Zielrechnern installieren zu müssen.
Ich verwende jetzt also eine TADOConnection-Komponente, Verbindung zum Server läuft super, einfache Scripts lassen sich auch ohne Fehler übertragen, allerdings kommt es bei größeren Transaktionen regelmäßig zu einer
Exception á la "Syntaxfehler in der Nähe von "GO" / "Select" etc.". Scheinbar prüft also die ADOConnection die Syntax der Abfrage und blockiert diese unter Umständen. Ich weiß allerdings 100%ig, dass die
SQL-Scripts korrekt sind, sie werden von
Query Analyzer ohne Mucken verarbeitet.
Daher nun meine Frage: Kann ich der ADOConnection irgendwie mitteilen, dass ihr der Syntax meines Scripts egal zu sein hat?
Bis jetzt sieht der Code folgendermaßen aus:
Delphi-Quellcode:
function executeSQL(filename :
string;
ADO: TADOConnection) : boolean;
var i : integer;
sql : widestring;
success : boolean;
begin
success := false;
sql := CreateSQLSequence(filename);
with ADO do
begin
if not Connected
then Open;
try
BeginTrans;
Execute(
sql,i,[eoExecuteNoRecords]);
success := true;
except
on e:
Exception do
success := false;
end;
// try .. except
if success
then
CommitTrans
else
begin
RollbackTrans;
showmessage('
Bei der Verarbeitung ist ein Fehler aufgetreten');
end;
// if .. else
Close;
end;
// with ADO do
end;
// executeSQL
Vielen Dank schonmal im Voraus für eure Hilfe.
Greetings, tkoenig