2009-09-01 83 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并重新打开它。我尝试刷新本地缓存,并没有工作。

相关问题