3

SQL Server 2008 と SSMS 2012 を使用しています。存在しないテーブルを参照するストアド プロシージャがあります。エディターは、問題のあるテーブルに赤い下線を表示して、何か問題があることを示します。

ただし、クエリを実行すると、メッセージが表示されます

コマンドは正常に完了しました。

これは非常に迷惑です。また、別のマシンからエンジンに接続しましたが、同じ問題が発生しました。これは、ssms ではなくサーバー上にあることを意味します。データベースがストアド プロシージャの構文をチェックするかどうかを決定する、データベースに何らかの設定がありますか? 助けてください!

明確化: 構文が間違っていることはわかっています。問題は、SSMS では、存在しないテーブルを参照している場合でも、エラーなしで CREATE または ALTER ステートメントを実行できることです。失敗してほしい。通常はそうですが、何らかの理由で突然エラーが発生しなくなりました。私はそれが私にエラーを与えることを望みます。どうすればいいですか?

4

3 に答える 3

2

構文は問題なく、ストアド プロシージャの作成時にチェックされます。ただし、テーブルの存在は、ストアド プロシージャがコンパイルされるまでチェックされず、ストアド プロシージャが実行されるときにチェックされます。

于 2012-10-19T19:49:07.077 に答える
0

何が起こっているかというと、管理スタジオの IDE でスキーマ モデルが更新されていないということです。SSMS のローカル インスタンスはテーブルが存在することを認識していないため、テーブル名の下に赤い線が表示されます。実際に sproc/query を実行すると、データベースに送信されたコードが適切に評価されて実行されます。

SSMS ローカル データを更新するには、こちらCtrl-Shift-Rで説明されているように、 を押してみてください。

編集:

Deferred Name Resolutionを調べることをお勧めします。

于 2012-10-19T19:41:54.287 に答える