2010-07-06 79 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,它工作正常。