Amiga-Fan hat folgendes geschrieben: |
im sqlserver management studio kann man unter Optionen/Abfrageausführung das Batchtrennzeichen einstellen, das normalerweise GO heißt |
ja, das kann schon sein! nur dieses Batch-trennzeichen ist nur für die MSSQL-Clients (osql und ähnliche) gedacht! es ist kein SQL-Konformer Befehl! es wird nichtmal zum SQL-Server abgeschickt, sondern nur vom Client dementsprechent umgewandelt!
Wenns GO als SQL Befehl zum server abschickst bekommst genauso eine Fehlermeldung!
jetzt brauch ich aber einen SQL (oder SQL Server) Befehl, der genau das gleiche, wie GO bewirkt!
Normalerweise würd ich damit rechnen, dass COMMMIT die bewirkt ( BEGIN TRANSACTION .... COMMIT ), tut dies aber nicht
also
Create Spalte
Commit // <- an dieser Stelle sollte doch die Spalte in die DB geschrieben werden
Spalte Wert zuweisen // <- funktioniert aber nicht, da anscheinend Spalte do noch nicht vorhanden!
Wird das Commit durch GO ersetzt funktioniert aber alles problemlos
(das beispiel bezieht sich auf ein durch OSQL gestartetes script)
Da ich aber von meiner aplikation aus die SQL-Befehle Starte, darf ich GO ja nicht verwenden...wie soll ichs dann machen??
ungefährer programmablauf:
Query.SQL.LoadFromFile(updatefile.sql)
Query.ExecSQL
Query.Close
Query.Free
Wenn ich aber das erzeugen der tabelle in 2 schritten machen würde, dann funktionierts
//zuerst erzeugen
Query.SQL.Add( 'create Spalte' )
Query.ExecSQL
Query.Close
//dann zuweisen
Query.SQL.Add( 'Spalte wert zuweisen' )
Query.ExecSQL
Query.Close
???? hab schon alles mögliche ausprobiert! keine ahnung mehr!