web-dev-qa-db-ja.com

SQL Serverのオブジェクト名が無効です - ただし、SSMSテーブルリストにテーブルが表示されています

新しく作成したデータベース用のStored Procedureを作成しようとしています。しかしSSMSインテリセンスは作成されたテーブルの半分以上を認識しません。

たとえば、テーブルの下の左側の列にテーブルdbo.Roomがありますが、新しいクエリウィンドウに「dbo.」と入力すると、そのテーブルは表示されず、実際には37個のテーブルのうち17個だけが表示されます。

インテリセンスによってリストされたテーブルとそうでないテーブルとの間に違いは見られません。手動でdbo.Roomと入力すると、下線が引かれ、エラーが表示されます。

無効なオブジェクト名 'dbo.Room' ..

テーブルの設定に失敗しましたか?

UPDATE:私はテーブルリストのリフレッシュを試みました(数回)

291
Richbits

試してください:

Edit - > IntelliSense - > Refresh Local Cache

これにより、Intellisenseによってキャッシュされたデータが更新され、先行入力のサポートと実行前のエラー検出が可能になります。

注:IntelliSenseメニューを表示するには、カーソルがクエリエディタ内にある必要があります。

627
Adam Robinson

Ctrl + Shift + R マネジメントスタジオ2008でもインテリセンスをリフレッシュ。

71
Zielyn

新しいSQL Serverオブジェクトを作成すると、そのオブジェクトはIntelliSence Local Cacheで更新されないため、そのオブジェクトの下に赤い線が表示されます。そのため、SSMS IntelliSenceローカルキャッシュを更新するだけで、それを更新すると、IntelliSenceが自動的に新しく作成されたオブジェクトをキャッシュに追加し、赤い線が消えます。これを試して

Edit -> IntelliSense -> Refresh Local Cacheまたは Ctrl + Shift + R

enter image description here

35
Nagaraj S

選択したDBがテーブルのあるものであることを確認してください。私はMasterでスクリプトを実行していました。私の場合は、hr_dbに切り替える必要がありました。

enter image description here

ルーキーの間違いですが、誰かを助けることができます。

19
Daniel Segura

私の場合、IntelliSenseキャッシュはまったく異なるデータベースのオブジェクト情報をリストしていました。 SSMSで[新しいクエリ]ボタンをクリックした場合、サーバー上の既定のカタログに対するクエリが開き、そのクエリエディタでは常にそのデータベースのみが使用されます。キャッシュを更新しても何も変わりませんでした。 SSMSを再起動しても何も変わりません。データベースを変更しても何も変わりませんでした。

実際に使用したいデータベースを右クリックし、そのコンテキストメニューから[新しいクエリ]を選択してクエリを作成しました。 これでSSMSはIntelliSense用の正しいオブジェクトを使用します。

17
Bacon Bits

あなたは問題のテーブルが存在することを確信していますか?

オブジェクトエクスプローラでテーブルビューを更新しましたか?これは "tables"フォルダを右クリックして F5 キー。

また、Intellisenseキャッシュを更新する必要があります。

これは、メニュールートに従って実行することができます。編集 - > IntelliSense - >ローカルキャッシュの更新

10
John Sansom

解決策は次のとおりです。

  • クエリメニューをクリックします。
  • 次に[データベースの変更]をクリックします。
  • 適切なデータベース名を選択してください。

それでおしまい。

8
Tono FRL

SQL Server 2008 EnterpriseにSP3をインストールした後でも、これはまだ「問題」です。 Ctrl+Shift+R 誰もが私のためにこの問題を解決したと言ってきたように。

4
demmith

私はこの構文の問題を使用したときに私と同じ問題が解決した。

構文:

Use [YourDatabaseName]
Your Query Here
3
user5093161

SSMS 2016用に解決されました。

同様の問題がありましたが、Intellisenseは編集メニューにありませんでした。

この問題を解決するために行われたのは、Intellisensのオンとオフを切り替え、SQLエディタを右クリックして「Intellisense Enabled」をクリックすることです。もう一度「Intellisense Enabled」を右クリックして再度有効にします。 Ctr Q、私もこれをします。

これで問題は解決しました、そしてまた私は編集メニューのIntellisenseを得ることを知っています。

2
Eric Yeoman

SMSSを閉じて再度開くだけです。私はRefresh Local Cacheを試しましたが、それはうまくいきませんでした。

1
stealthysnacks

データベースを右クリックして[更新]をクリックしてみましたか

1
KM.

私はこの質問がすでに答えられていることを理解しています、しかし、私は別の解決策を持っていました:

再作成せずにテーブルを削除するスクリプトを作成している場合、後でそれらを参照しようとすると、それらのテーブルは見つからないと表示されます。

注:これは常に実行されるスクリプトでは発生しませんが、スクリプトを毎回入力するよりも参照するためのクエリがある方が簡単なことがあります。

1
Troy Loberger