2010-07-06 152 views
4

我有一个存储过程为'ContentMarginExVat'抛出'Invalid column name'错误;列名无效SQL Server bug

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

我已经检查两个VWProductsCurrents和获取数据,这些都具有选择的ContentMarginExVat关联的表,但还没有在SQL Server Management Studio中2008仍然表示,该列具有无效的名称。

想知道如果有人能够就此提供任何建议吗?

谢谢。

回答

2

尝试执行此查询和列名复制到您的查询:

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

或试图重新编译存储过程:

exec sp_recompile 'your_proc_name' 
+0

嘿,跑了查询。它显示了22个VWProductsCurrent的结果,22个是ContentMarginExVat:S – doubleplusgood 2010-07-06 11:05:18

+0

尝试重新编译存储的proc – silent 2010-07-06 11:07:17

+0

尝试'SELECT'*'+ name +'*'...'查看是否有任何空格存储在名称中。 。 – cjk 2010-07-06 11:08:08

4

你需要运行

exec sp_refreshsqlmodule 'VWProductsCurrent' 

刷新举行有关视图的元数据。

+1

据我所知'不是表 – silent 2010-07-06 11:05:04

+2

@silent - 我假设'VW'前缀是匈牙利符号的视图。 – 2010-07-06 11:06:45

+0

他说'有问题的表 – silent 2010-07-06 11:13:40

0

时所做的更改我得到这个错误我后端但连接指向另一个未更新的后端副本,所以我只需要将连接字符串 更改为更新的后端,并且它可以工作... ;-)

+0

鉴于OP通过重新编译解决了这个问题,它不太可能将它们连接到错误的db。 – 2012-09-28 21:42:27

6

当我选择“Select First 1000 Rows”时,我遇到了由SSMS生成的查询的这个问题。红色在我的列名下,并在我的表名下。但查询立即执行并显示正确的数据。

经过一番谷歌搜索后,我发现this link

我按下了Ctrl-Shift-R来刷新缓存。没有任何事情立即发生,但大约5-6秒之后,我发现这个问题,两个桌子上的小波浪消失了。

0

重命名OBJECT_ID到ID

按Ctrl + Shift + R并没有为我工作,即使它去掉了波浪线和也没有无声的回答。观察脚本后,我虽然可能名称object_id与OBJECT_ID函数混淆。我改变了object_id id,它工作正常。