我有一个存储过程会为'ContentMarginExVat'抛出'无效列名'错误;
SELECT CategoryTitle, ContentID, ContentTitle, ContentMarginExVat, ContentWeight
FROM VWProductsCurrent
WHERE ContentID = @ContentID
我检查了VWProductsCurrents和获取数据的关联表,这两个表都选择了ContentMarginExVat,但SQL Server Management Studio 2008仍然说该列的名称无效。
想知道是否有人可以对此提出任何建议?
谢谢。
答案 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并且工作正常。