添加新列后,SQL Server无效列名


69

我只是通过SSMSDesigner通过数据向现有表添加了一个标识列,该表更新良好,并且可以针对该表成功运行选择查询,但是查询完成后,我注意到新列用红色下划线标出,并带有错误指示这是无效的列名。

为什么会发生这种情况?如果列无效,我希望查询失败。

SSMS是否保留对必须刷新的旧表的某种内部引用?

我尝试关闭数据库连接并重新打开它,但仍然是相同的错误。不知道我在这里想念的是什么。

SELECT TOP 100 
[PRIMARY_NDX_Col1],
[NEW_Col], --QUERY EXECUTES SUCCESSFULLY, BUT THIS IS UNDERLINED RED AS AN INVALID COLUMN
[Col3]
FROM [dbo].[MyTable]

3
刚刚尝试重新启动,并修复了它。想知道是否有一种方法可以在编辑表后动态清除SSMS 2008缓存。这似乎是人们可能花费数小时来进行故障排除的错误。
kingrichard2005

您无需重新启动SSMS即可解决此问题。保持本文方便,最常见的原因之一是SSMS刷新其元数据本地缓存的速度不够快。mssqltips.com/sqlservertip/2591/…–
Aaron Bertrand

请解释为什么此问题不能提供所提供的答案,以便可以对其进行增强。@AaronBertrand那里的好提示!
Mark Schultheiss

Answers:


191

你可以

  • Ctrl+ Shift+R

要么

  • 转到编辑>> IntelliSense >>刷新本地缓存

抱歉,我在一年后问这个问题。.我正在使用sql server 2000广告,但没有CTRL + SHIFT + R控件或IntelliSense之类的控件,并且遇到了同样的问题。 ?
Nejthe

只是更多信息:“如果通过使用ALTER VIEW修改了当前使用的视图,则数据库引擎将对该视图进行排他的模式锁定。当授予该锁定并且该视图没有活动用户时,数据库引擎将删除过程缓存中的所有视图副本。引用该视图的现有计划保留在缓存中,但是在调用时会重新编译。” technet.microsoft.com/zh-cn/library/ms173846.aspx(请参阅“备注”部分)
Danny Bullis 2013年

我有一个问题,我从设计中更改了一些列名并保存了表。我确实刷新了intellisense本地缓存...现在在查询中,所做的更改有效,并且红线对错误做出了反应,但是当我运行该查询时,它再次显示错误消息“无效的列名称”,当我写回旧名称时它就可以了.....在这方面帮助我...... !!!!
bonny

1
如果看起来不起作用,请数到十。刷新需要一些时间,并且工作或完成时都没有任何信号。
billpg '18

1
如果即使按照@David的回答仍无法解决问题,请尝试关闭并重新打开SSMS。这对我有用。
迪帕克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.