120 Stimmen

TSQL - Wie verwendet man GO innerhalb eines BEGIN END-Blocks?

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?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X