web-dev-qa-db-ja.com

SQL Server:無効な列名

既存のSQL Serverストアドプロシージャの変更に取り組んでいます。テーブルに2つの新しい列を追加し、ストアドプロシージャも変更して、これらの2つの列も選択しました。列はSQL Serverがこのエラーを表示し続けるテーブルで利用可能ですが:

無効な列名「INCL_GSTAMOUNT」

enter image description here

誰がここで何が悪いのか教えてもらえますか?

60
Kamran Ahmed

これが私に起こるたびに、私は押します Ctrl+Shift+R これはintellisenseを更新し、クエリウィンドウを閉じて(必要に応じて保存し)、新しいセッションを開始します。これは通常非常にうまく機能します。

151
Ric

文字列を一重引用符ではなく二重引用符で囲む場合にも発生する可能性があります。

49
Harry

このエラーは、カプセル化されたSQLステートメントでも発生する場合があります。

DECLARE @tableName nvarchar(20)SET @tableName = 'GROC'

DECLARE @updtStmt nvarchar(4000)

SET @updtStmt = 'Update tbProductMaster_' + @ tableName + 'SET department_str =' + @tableName exec sp_executesql @updtStmt

パラメータ "@tableName"をさらにカプセル化するための引用符がないことを発見するために、次のようにします。

SET @updtStmt = 'tbProductMaster_'を更新+ @ tableName + 'SET department_str =' '' + @tableName + '' ''

ありがとう

3
Chagbert

IntelliSenseは自動更新されないため、完全に依存しないでください

2
Madhivanan

ビューを作成するときに同じエラーが発生していました。

問題なく実行される選択クエリを想像してください。

select id
from products

同じクエリからビューを作成しようとすると、エラーが発生します。

create view app.foobar as
select id
from products

メッセージ207、レベル16、状態1、プロシージャfoobar、行2
無効な列名「id」。

私にとって、それはスコーピングの問題であることが判明しました。ビューは別のスキーマで作成されていることに注意してください。 productsテーブルのスキーマを指定すると、問題が解決しました。つまり、単にproductsの代わりにdbo.productsを使用しています。

1
Molomby

同様の問題がありました。

問題は、監査ログテーブルに変更を書き込むトリガーがテーブルにあったことでした。監査ログテーブルに列がありませんでした。

0
William Monahan

次の手順でこの問題を解決できましたが、その理由はわかりません。

  1. メッセージの行で指定された問題のコードを切り取ります
  2. クエリを保存します(たとえば、ファイルに)
  3. 以前の場所にコードを貼り付けます
  4. 再度クエリを保存します

同じクエリを実行しているように見える場合でも、このエラーはスローされませんでした

0
Dreanaught

試しただけです。ステートメントを実行してローカルテーブルを生成すると、ツールはこの列名が存在することを受け入れます。エディターウィンドウでテーブル生成ステートメントをマークし、[実行]をクリックします。

0
Anderas
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
0
Junior Placido

テーブルを更新するか、SQLサーバーを閉じて開いてこの作業を行います

0
behzad