2009-09-01 82 views
230

我正在嘗試爲新創建的數據庫創建存儲過程。然而,SSMS智能感知不能識別已經創建的表格的一半以上。sql server無效的對象名稱 - 但表中列出的SSMS表列表

例如,在表格下方的左欄中,我有一個表dbo.Room,當我在新查詢窗口中輸入「dbo.」時,該表格未列出,實際上只列出了37個表格中的17個表格。我發現intellisense列出的表與沒有列出的表之間沒有區別。如果我手動鍵入dbo.Room,則會加下劃線,並顯示錯誤「Invalid Object Name 'dbo.Room'.」。

我在設置表格時錯過了什麼嗎?

更新:我已經嘗試了表列出的刷新(多次)

+29

謝謝。編輯 - >智能感知 - >刷新本地緩存爲我工作! – SarjanWebDev 2011-06-09 00:40:04

+2

解決方案:'[DatabaseName]。[Schema]。[TableName]'[SO:Invalid Object Name sql](http://stackoverflow.com/a/24621331/1608670) – 2016-01-24 13:56:55

回答

513

嘗試:

編輯 - >智能感知 - >刷新本地緩存

這應該刷新Intellisense緩存的數據以提供預先打印支持和預執行錯誤檢測。

+0

謝謝,我懷疑這會解決。我實際上重新啓動了SSMS並發現解決了。大概應該做到這一點,但我最初的想法是我在安裝過程中做了錯誤的事情。 – Richbits 2009-09-01 13:54:17

+4

Intellisense/SSMS是否定期刷新自身?或者這一定是一個手動過程? (我的猜測基於2005年的SSMS,但人們總是希望。) – 2009-09-01 14:26:48

+16

難以置信,2012年你需要這樣做。他們不能每隔幾秒自動更新一次Intellisense嗎? – 2012-02-29 05:51:43

0

你嘗試:右鍵單擊數據庫,然後單擊「刷新」

+0

是的,我試過了,我確信它在那裏,我可以添加記錄和修改等。只是從dbo.Room中做了一個Select *,而我仍然有下劃線輸出表格的內容。我會嘗試重新啓動。 – Richbits 2009-09-01 13:46:45

8

你一定有問題的表是否存在?

你刷新了對象資源管理器中的表格視圖嗎?這可以通過右鍵單擊「桌子」文件夾並按下F5鍵來完成。

您可能還需要重新刷新Intellisense緩存。

這可以通過以下菜單途徑來實現:編輯 - >智能感知 - >刷新本地緩存

+2

什麼是對他人答案的微小修改?你給我的答案增加了一段時間,給@Adam Robinson的答案增加了一個冒號。你在玩什麼遊戲? – 2009-09-01 13:54:22

+4

我沒有足夠的時間進行比賽,但是當涉及到語法時,我可以是一個小強迫症;-) – 2009-09-01 15:32:16

+2

尼斯詩意的正義,你忘記了你自己的句子! – 2015-05-08 01:21:02

59

Ctrl鍵 + + - [R刷新管理工作室2008智能感知爲好。

+0

我沒有這個功能......當我按下ctrl + shift + R時沒有任何變化 – 2015-09-09 17:20:54

+1

@IbrahimAmer您的光標必須位於查詢編輯器中,才能使Intellisense菜單選項可用。如果智能感知菜單選項不可用,快捷方式將不會執行任何操作。 – Rachael 2015-10-02 13:35:27

+0

它也適用於SQL Server Management Studio 2014中的T-SQL – VSG24 2016-12-27 18:59:48

4

即使在將SP3安裝到SQL Server 2008 Enterprise後,這仍然是一個「問題」。 Ctrl + Shift + R像大家一直在說的那樣爲我解決了這個問題。

+0

我沒有此功能...當我按Ctrl + Shift + R時沒有任何更改 – 2015-09-09 17:21:03

+0

@IbrahimAmer您的光標必須位於Intellisense菜單的查詢編輯器中選項可用。如果智能感知菜單選項不可用,快捷方式將不會執行任何操作。 – Rachael 2015-10-02 13:36:24

26

一旦你創建了一個新的SQL Server對象,你新創建的對象不會在IntelliSence本地緩存中得到更新,並且由於這個原因,它會在該對象下面顯示紅線。因此,您只需刷新SSMS IntelliSence本地緩存,一旦刷新它,IntelliSence就會自動將新創建的對象添加到緩存中,紅線將消失。試試這個

Edit -> IntelliSense -> Refresh Local Cache按Ctrl + + [R

enter image description here

+1

我沒有這個功能......當我按ctrl + shift + R時沒有任何變化 – 2015-09-09 17:21:10

+3

@IbrahimAmer您的光標必須位於查詢編輯器中,才能使Intellisense菜單選項可用。如果智能感知菜單選項不可用,快捷方式將不會執行任何操作。 – Rachael 2015-10-02 13:35:42

6

解決的辦法是:

  • 點擊菜單查詢,
  • 然後單擊「更改數據庫」。
  • 選擇適當的數據庫名稱。

就是這樣。

0

我意識到這個問題已經回答了,但是,我有不同的解決方案:

如果你正在寫,你刪除表,而不用重新創建這些腳本,這些表將顯示爲丟失,如果你嘗試稍後參考它們。

注意:對於不斷運行的腳本不會發生這種情況,但有時候使用腳本查詢reerence比在每次輸入腳本時更容易。

13

在我的情況下,IntelliSense緩存列出了完全不同的數據庫的對象信息。如果我單擊SSMS中的「新建查詢」按鈕,它將打開一個查詢到我在服務器上的默認目錄,該查詢編輯器將始終只使用該數據庫。刷新緩存不會改變任何內容。重新啓動SSMS並沒有改變任何東西。改變數據庫並沒有改變任何東西。

我最終創建了一個查詢,通過右鍵單擊我實際想要使用的數據庫並從該上下文菜單中選擇「New Query」。 現在 SSMS使用智能感知的正確對象。

+1

這也是我的情況。感謝分享。 – bkarj 2015-07-06 19:19:42

+0

在查詢之前使用datbaseName GO還可以設置上下文 – bkarj 2015-07-13 00:03:22

+0

@BehroozKarjoo是的,我試過了。它似乎並不總能奏效。如果我可以重現它,我會把它放在Microsoft Connect或其他東西上。我確定他們會將它標記爲WONTFIX或者同樣令人惱火的東西,但我會報告它。 – 2015-07-13 02:51:42

2

與我同樣的問題,當我用這個語法問題解決。

語法:

Use [YourDatabaseName] 
Your Query Here 
0

解決的SSMS 2016年

也有類似的問題,但智能感知是不是在編輯菜單。

什麼似乎解決它是打開和關閉Intellisens,右鍵單擊SQL編輯器,然後單擊「Intellisense Enabled」。再次右鍵點擊'Intellisense Enabled'將其重新打開。 Ctr Q,我也是這樣做的。

這解決了這個問題,我也知道在編輯菜單上獲得智能感知。

0

我只需關閉SMSS並重新打開它。我嘗試刷新本地緩存,並沒有工作。

相關問題