既存のSQL Serverストアドプロシージャの変更に取り組んでいます。テーブルに2つの新しい列を追加し、ストアドプロシージャも変更して、これらの2つの列も選択しました。列はSQL Serverがこのエラーを表示し続けるテーブルで利用可能ですが:
無効な列名「INCL_GSTAMOUNT」
誰がここで何が悪いのか教えてもらえますか?
これが私に起こるたびに、私は押します Ctrl+Shift+R これはintellisense
を更新し、クエリウィンドウを閉じて(必要に応じて保存し)、新しいセッションを開始します。これは通常非常にうまく機能します。
文字列を一重引用符ではなく二重引用符で囲む場合にも発生する可能性があります。
このエラーは、カプセル化された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 + '' ''
ありがとう
IntelliSenseは自動更新されないため、完全に依存しないでください
ビューを作成するときに同じエラーが発生していました。
問題なく実行される選択クエリを想像してください。
select id
from products
同じクエリからビューを作成しようとすると、エラーが発生します。
create view app.foobar as
select id
from products
メッセージ207、レベル16、状態1、プロシージャfoobar、行2
無効な列名「id」。
私にとって、それはスコーピングの問題であることが判明しました。ビューは別のスキーマで作成されていることに注意してください。 products
テーブルのスキーマを指定すると、問題が解決しました。つまり、単にproducts
の代わりにdbo.products
を使用しています。
同様の問題がありました。
問題は、監査ログテーブルに変更を書き込むトリガーがテーブルにあったことでした。監査ログテーブルに列がありませんでした。
次の手順でこの問題を解決できましたが、その理由はわかりません。
同じクエリを実行しているように見える場合でも、このエラーはスローされませんでした
試しただけです。ステートメントを実行してローカルテーブルを生成すると、ツールはこの列名が存在することを受け入れます。エディターウィンドウでテーブル生成ステートメントをマークし、[実行]をクリックします。
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
テーブルを更新するか、SQLサーバーを閉じて開いてこの作業を行います