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
 
nahpets
(Gast)

n/a Beiträge
 
#6

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

  Alt 17. Mär 2010, 08:42
Hallo,

die Syntaxprüfung dürfte von der Datenbank kommen.

Kann mir nicht vorstellen, dass die ADO-Connection für quasi jeden beliebigen Datenbanktyp vorab eine Syntaxprüfung durchführen kann.

Zumindest die Fehlermeldung Syntaxfehler in der Nähe von ist absolut typisch für den SQL-Server, die anderen, von mir bis dato genutzten Datenbanken, geben etwas präzisere Fehlermeldungen aus.

Dir bleibt hier (vermutlich) nichts anderes übrig, als Dir die Dateiinhalte zu nehmen und statementweise zu testen, d. h.:
zuerst das erste Statement, dann das erste und das zweite, dann das erste, das zweite und das dritte, bis Du das Script auf diese Weise wieder vollständig zusammengebaut hast, bzw. auf den ersten Fehler stößt.

Manchmal hilft zur Fehlerkorrektur ein zusätzliches Semikolon oder auch mal eins weglassen, eine zusätzliche Leerzeile zwischen einzelnen Statements...

Auch die Menge der Hochkommata sollte überprüft werden, zumindest, wenn sie irgendwo verschachtelt vorkommen.

Der Hinweis von Bommel ist nicht zu vernachlässigen: Kannst Du mit sql = widestring beliebig große Zeichenfolgen "übermitteln" oder gibt es da eine Grenze.
Lies zum Test Deine Dateien in sql ein und schreibe sql in eine neue Datei. Alte und neue Datei müssen identisch sein, wenn nicht, geht da was verloren und Du hast den "Übeltäter".

Unvollständige Statements passen sehr gut zu Deiner Fehlermeldung.

Kannst Du mit Execute(sql,i,[eoExecuteNoRecords]); beliebiggroße Statements übergeben oder hat diese Methode eventuell bezüglich der Größe der Zeichenfolge eine Begrenzung?

Auch Dein Hinweis
Zitat:
Ich habe eher den Verdacht, dass ADO nicht mit mehreren Befehlen innerhalb einer Transaction klarkommt
geht in die richtige Richtung, hierbei gilt die Einschränkung aber nicht in Bezug auf Transaktion sondern auf mehrere Befehle.

Es gibt Datenbanken, denen kann man per Query und ExecSQL mehrere Befehle "in einem Rutsch" übergeben, also Query.SQL enthält hier mehrere Befehle. Dies funktioniert allerdings nicht bei allen Datenbanken.

Für Deine eigentlich überschaubare Aufgabenstellung hast Du hier leider deutlich zuviele "Stolpersteine". Hoffe, Du findest mit unseren Hinweisen eine einfache Lösung.
  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 04:55 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-2025 by Thomas Breitkreuz