Ich erstelle ein Skript für die automatische Migration von Änderungen aus mehreren Entwicklungsdatenbanken in das Staging/Produktionssystem. Im Grunde genommen nimmt es eine Reihe von Änderungsskripten und führt sie in einem einzigen Skript zusammen, indem es jedes Skript in ein IF whatever BEGIN ... END
Erklärung.
Einige der Skripte erfordern jedoch eine GO
Anweisung, so dass der SQL-Parser beispielsweise von einer neuen Spalte weiß, nachdem sie erstellt wurde.
ALTER TABLE dbo.EMPLOYEE
ADD COLUMN EMP_IS_ADMIN BIT NOT NULL
GO -- Necessary, or next line will generate "Unknown column: EMP_IS_ADMIN"
UPDATE dbo.EMPLOYEE SET EMP_IS_ADMIN = whatever
Sobald ich das jedoch in eine IF
Block:
IF whatever
BEGIN
ALTER TABLE dbo.EMPLOYEE ADD COLUMN EMP_IS_ADMIN BIT NOT NULL
GO
UPDATE dbo.EMPLOYEE SET EMP_IS_ADMIN = whatever
END
Es schlägt fehl, weil ich eine BEGIN
ohne passende END
. Wenn ich jedoch die GO
beschwert er sich erneut über eine unbekannte Spalte.
Gibt es eine Möglichkeit, dieselbe Spalte in einer einzigen Datei zu erstellen und zu aktualisieren? IF
Block?