Ich entwickle SQL-Skript mit SSMS, das einige Änderungen in der Datenbank vornimmt:
%Vor% Wenn Table1
eine Spalte mit dem Namen Table2_Id
hat, hat die Datenbank zwei Tabellen ( Table1
und Table2
) und eine Fremdschlüsselbeziehung zwischen ihnen. In diesem Fall muss ich:
FK_Table1_Table2_Table2_Id
; Table1.Table2_Id
; Table2
; Table2
unter Verwendung des neuen Tabellenschemas; Table2
ein. Wenn ich versuche, dieses Skript auszuführen, erhalte ich folgende Fehler:
Nachricht 207, Ebene 16, Status 1, Zeile 262 Ungültiger Spaltenname "Nummer".
Meldung 207, Ebene 16, Status 1, Zeile 262 Ungültiger Spaltenname 'Name'.
Sieht so aus, als ob SQL Server das alte Schema für Table2
verwendet (was in der Tat nicht diese Spalten hat), aber wie ist das möglich, wenn die Tabelle gerade mit einem neuen Schema erstellt wurde?
Was mache ich falsch?
Die Serverversion ist SQL Server 2012 (SP1) - 11.0.3128.0 (X64).
AKTUALISIEREN .
Ich habe PRINT
Aufrufe hinzugefügt (siehe Skript oben). Es gibt nichts im Nachrichtenfenster, außer Fehlermeldungen. Also, das Skript wird nicht ausgeführt ... Was ist los?
SQL Server versucht, den gesamten Stapel zu kompilieren. Wenn die Tabelle bereits existiert, wird sie gemäß der vorher existierenden Definition kompiliert. Die Anweisung, die auf die neuen Spalten verweist, wird nicht kompiliert und daher wird der Batch nie ausgeführt.
Sie müssen die Anweisungen unter Verwendung der neuen Definition in einem neuen Stapel gruppieren. Wenn Sie dies in SSMS ausführen, fügen Sie einfach ein GO
Andernfalls könnten Sie die problematische Zeile in einem untergeordneten Batch ausführen
%Vor%Tags und Links sql-server sql-server-2012-express