无效的列名SQL Server错误

时间:2010-07-06 10:55:02

标签: sql sql-server

我有一个存储过程会为'ContentMarginExVat'抛出'无效列名'错误;

SELECT  CategoryTitle, ContentID, ContentTitle, ContentMarginExVat, ContentWeight
FROM    VWProductsCurrent
WHERE   ContentID = @ContentID

我检查了VWProductsCurrents和获取数据的关联表,这两个表都选择了ContentMarginExVat,但SQL Server Management Studio 2008仍然说该列的名称无效。

想知道是否有人可以对此提出任何建议?

谢谢。

5 个答案:

答案 0 :(得分:7)

当我选择“选择前1000行”时,SSMS生成的查询出现此问题。红色在我的专栏名称下面和我的桌面名称下面。但查询立即执行并显示正确的数据。

经过一些谷歌搜索后,我找到了this link

我按下Ctrl-Shift-R刷新缓存。没有什么事情立即发生,但是大约5-6秒后,曲线在我遇到这个问题的两张桌子上消失了。

答案 1 :(得分:4)

你需要运行

exec sp_refreshsqlmodule 'VWProductsCurrent'

刷新有关视图的元数据。

答案 2 :(得分:2)

尝试执行此查询并将列名复制到查询中:

select 
  name 
from
  sys.columns 
where
  object_id = object_id('VWProductsCurrent')

或尝试使用以下命令重新编译存储过程:

exec sp_recompile 'your_proc_name'

答案 3 :(得分:0)

我在我的后端进行了更改后出现了这个错误,但是有一个连接指向另一个未更新的后端副本,所以我只需更改连接字符串 到更新的后端,它工作...; - )

答案 4 :(得分:0)

将object_id重命名为id

Ctrl + Shift + R对我来说不起作用,即使它删除了波浪线并且没有做出沉默的回答。在观察脚本之后,我可能会将名称object_id与函数OBJECT_ID混淆。我将object_id更改为id并且工作正常。