Ich arbeite daran, die vorhandene gespeicherte SQL Server-Prozedur zu ändern. Ich habe der Tabelle zwei neue Spalten hinzugefügt und auch die gespeicherte Prozedur geändert, um auch diese beiden Spalten auszuwählen. Obwohl die Spalten in der Tabelle verfügbar sind, gibt SQL Server weiterhin diesen Fehler aus:
Ungültiger Spaltenname 'INCL_GSTAMOUNT'
Kann mir bitte jemand sagen, was hier los ist?
sql
sql-server
sql-server-2008
stored-procedures
Kamran Ahmed
quelle
quelle
Antworten:
Immer wenn mir dies passiert, drücke ich Ctrl+ Shift+ R, um zu aktualisieren
intellisense
, schließe das Abfragefenster (speichere es bei Bedarf) und starte dann eine neue Sitzung, die normalerweise recht gut funktioniert.quelle
Könnte auch passieren, wenn Zeichenfolge in doppelte Anführungszeichen anstatt in einfache Anführungszeichen gesetzt wird.
quelle
Dieser Fehler kann AUCH in gekapselten SQL-Anweisungen auftreten, z
Nur um festzustellen, dass Anführungszeichen fehlen, um den Parameter "@tableName" wie folgt weiter zu kapseln:
Vielen Dank
quelle
Intellisense wird nicht automatisch aktualisiert, und Sie sollten sich nicht vollständig darauf verlassen
quelle
Ich habe es versucht. Wenn Sie die Anweisung ausführen, um Ihre lokale Tabelle zu generieren, akzeptiert das Tool, dass dieser Spaltenname vorhanden ist. Markieren Sie einfach die Anweisung zur Tabellengenerierung in Ihrem Editorfenster und klicken Sie auf Ausführen.
quelle
Beim Erstellen einer Ansicht wurde der gleiche Fehler angezeigt.
Stellen Sie sich eine ausgewählte Abfrage vor, die ohne Probleme ausgeführt wird:
select id from products
Der Versuch, eine Ansicht aus derselben Abfrage zu erstellen, führt zu einem Fehler:
create view app.foobar as select id from products
Für mich stellte sich heraus, dass es sich um ein Scoping-Problem handelte. Beachten Sie, dass die Ansicht in einem anderen Schema erstellt wird. Durch Angabe des Schemas der
products
Tabelle wurde das Problem behoben. Dh ..dbo.products
statt nurproducts
.quelle
Das folgende Verfahren hat mir geholfen, dieses Problem zu lösen, aber ich weiß nicht warum.
Auch wenn es sich anscheinend um dieselbe Abfrage handelt, die ausgeführt wird, wurde dieser Fehler nicht ausgelöst
quelle
mit Aktualisierungstabelle oder Schließen und Öffnen von SQL Server funktioniert dies
quelle
Ich hatte ein ähnliches Problem.
Problem war, dass es einen Auslöser für die Tabelle gab, der Änderungen in eine Überwachungsprotokolltabelle schrieb. In der Überwachungsprotokolltabelle fehlten Spalten.
quelle
There can be many things: First attempt, make a select of this field in its source table; Check the instance of the sql script window, you may be in a different instance; Check if your join is correct; Verify query ambiguity, maybe you are making a wrong table reference Of these checks, run the T-sql script again [Image of the script SQL][1] [1]: https://i.stack.imgur.com/r59ZY.png`enter code here
quelle
quelle
Ich habe festgestellt, dass beim Ausführen von Joins
MSSQL
"Ungültiger Spaltenname" ausgelöst wird, wenn sich die Tabelle, der Sie beitreten, nicht neben der Tabelle befindet, der Sie beitreten. Ich habe versucht,table1.row1
und anzugebentable3.row3
, habe aber immer noch den Fehler erhalten. es ging nicht weg, bis ich die Tabellen in der Abfrage neu ordnete. Anscheinend ist die Reihenfolge der Tabellen in der Anweisung wichtig.+-------------+ +-------------+ +-------------+ | table1 | | table2 | | table3 | +-------------+ +-------------+ +-------------+ | row1 | col1 | | row2 | col2 | | row3 | col3 | +------+------+ +------+------+ +------+------+ | ... | ... | | ... | ... | | ... | ... | +------+------+ +------+------+ +------+------+
SELECT * FROM table1, table2 LEFT JOIN table3 ON row1 = row3; --throws an error
SELECT * FROM table2, table1 LEFT JOIN table3 ON row1 = row3; --works as expected
quelle
Wenn Sie zur Spalte ALTER Table gehen und die Tabelle einschließlich der neuen Spalte im selben Skript sofort AKTUALISIEREN . Stellen Sie sicher, dass Sie den Befehl nach der Codezeile der Änderungstabelle wie folgt verwenden.
GO
ALTER TABLE Location ADD TransitionType SMALLINT NULL GO UPDATE Location SET TransitionType = 4 ALTER TABLE Location ALTER COLUMN TransitionType SMALLINT NOT NULL
quelle