AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [ADO und MS SQL-Server 2005/2008] Ausführen von Scripts
Thema durchsuchen
Ansicht
Themen-Optionen

[ADO und MS SQL-Server 2005/2008] Ausführen von Scripts

Ein Thema von tkoenig · begonnen am 16. Mär 2010 · letzter Beitrag vom 17. Mär 2010
 
tkoenig

Registriert seit: 16. Mär 2010
Ort: Dresden
19 Beiträge
 
Delphi XE7 Professional
 
#1

[ADO und MS SQL-Server 2005/2008] Ausführen von Scripts

  Alt 16. Mär 2010, 17:10
Datenbank: SQL Server • Version: 2005/2008 • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
 


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 10:47 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