sql server无效对象名称-但表列在SSMS表列表中

我正在尝试为新创建的数据库创建Stored Procedure。然而,SSMS智能感知不能识别超过一半的已创建的表。

例如,在表的左侧列下,我有一个表dbo.Room,当我在新的查询窗口中键入“dbo.”时,该表没有被列出,事实上,37个表中只有17个被列出。

我看不出智能感知和非智能感知列出的表格有什么不同。如果我手动输入dbo。房间,它是下划线,有一个错误

无效对象名称“dbo.Room”…

我是不是在摆桌子的时候漏掉了什么?

更新:我已经尝试刷新表列表(几次)

626916 次浏览

你尝试了吗:右键单击数据库,然后单击“刷新”

你确定有问题的桌子存在吗?

是否刷新了对象资源管理器中的表视图?这可以通过右键单击“tables”文件夹并按F5键来完成。

您可能还需要刷新智能感知缓存。

可以通过以下菜单路径完成:Edit -> IntelliSense -> Refresh Local Cache

试一试:

__abc0 -> __abc1 -> __abc2

这应该会刷新智能感知缓存的数据,以提供输入前支持和执行前错误检测。

注意:您的光标必须位于查询编辑器中,才能显示智能感知菜单。

Ctrl + 转变 + R刷新management studio 2008中的智能感知。

即使在安装了SP3到SQL Server 2008企业版之后,这仍然是一个“问题”。Ctrl+转变+R就像每个人都说的那样,为我解决了这个问题。

一旦你创建了一个新的SQL Server对象,你新创建的对象不会在智能本地缓存中得到更新,因此,它会在该对象下面显示红线。所以你只需要刷新SSMS智能本地缓存,一旦你刷新它,IntelliSence将自动在缓存中添加新创建的对象,红线将消失。试试这个

Edit -> IntelliSense -> Refresh Local CacheCtrl + 转变 + R

enter image description here

解决方案是:

  • 点击“查询”菜单,
  • 然后点击“更改数据库”。
  • 选择合适的数据库名称。

就是这样。

我意识到这个问题已经有了答案,但是,我有一个不同的解决方案:

如果您正在编写一个脚本,其中删除了表而没有重新创建它们,那么在稍后尝试引用这些表时,这些表将显示为丢失。

注意:对于经常运行的脚本,这不会发生,但有时使用带有查询的脚本比每次都输入查询要容易得多。

在我的例子中,智能感知缓存为一个完全不同的数据库列出对象信息。如果我单击SSMS中的“New Query”按钮,它将打开一个对服务器上默认编目的查询,并且该查询编辑器将始终只使用该数据库。刷新缓存不会改变任何东西。重新启动SSMS并没有改变任何东西。改变数据库并没有改变任何东西。

我最终通过右键单击我实际想要使用的数据库并从上下文菜单中选择“New query”来创建一个查询。现在 SSMS使用正确的对象进行智能感知。

同样的问题,当我用这个语法问题解决。

语法:

Use [YourDatabaseName]
Your Query Here

解决了SSMS 2016。

有一个类似的问题,但智能感知不在编辑菜单。

似乎解决它的是打开和关闭智能感知,右键单击SQL编辑器,然后单击“智能感知启用”。再次右键单击“智能感知启用”,再次打开它。Ctr Q,我也这么做。

这解决了问题,我也知道在编辑菜单上获得智能感知。

我只需要关闭SMSS并重新打开它。我尝试刷新本地缓存,但没有工作。

确保选中的DB就是表所在的DB。我在Master上运行脚本。在我的情况下,我必须切换到hr_db

enter image description here

新手的错误但是,可以帮助别人。

我遇到了一个问题: ODBC和ODBC中的SQL-Server-Authentication 而且 Firedac-Connection < / p > < p >解决方案: 我必须将参数MetaDefSchema设置为sqlserver用户名: FDConnection1.Params。AddPair (MetaDefSchema, self.FDConnection1.Params.UserName); < / p > wikidoc说: MetaDefSchema=默认模式名。设计时间代码>>不包括<<!! 如果它等于MetaDefSchema,则从对象SQL-Server-Authenticatoinname获取模式名。< / p >

不设置,自动编码器创建: Dbname.username.tablename ->无效对象名称

. Dbname.username.tablename ->无效对象名称 将MetaDefSchema设置为sqlserver-username: dbname。

. Tablename -> works

参见embarcadero-doc: http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_Microsoft_SQL_Server_ (FireDAC) < / p >

希望它能帮助别人。

问候,鲁茨

在azure data studio中按“cmd+shift+p”并输入“intellisense”,然后你会看到一个刷新智能感知缓存的选项。

不要忘记在编写模型之后创建您的迁移

对我来说,我从

[Database_LS].[schema].[TableView]

[Database_LS].[Database].[schema].[TableView]

我在Azure SQL Server工作。对于存储数据,我使用表值参数 像< / p >

DECLARE @INTERMEDIATE_TABLE3 TABLE {
x int;
}

我发现了写查询时的错误

SELECT
*
FROM
[@INTERMEDIATE_TABLE3]
WHERE
[@INTERMEDIATE_TABLE3].[ConsentDefinitionId] = 3

在查询列时,可以用[@INTERMEDIATE_TABLE3].[ConsentDefinitionId]这样的大括号将其括起来,但当只引用表值param时,不应该有params。所以它应该被用作@INTERMEDIATE_TABLE3

所以现在必须将代码更改为

SELECT
*
FROM
@INTERMEDIATE_TABLE3
WHERE
[@INTERMEDIATE_TABLE3].[ConsentDefinitionId] = 3

在我的例子中,我试图修改数据库中不存在的存储过程,在创建它并刷新本地缓存之后,它工作了