我正在使用SQL Server 2008和SSMS 2012.我有一個存儲過程引用一個不存在的表。編輯器在違規表上顯示紅色下劃線以表明有問題。SQL Server:存儲過程存儲錯誤
然而,當我執行查詢,我得到的消息成功完成
指令(S)。
這是非常討厭的。我也連接到另一臺機器的引擎,它遇到了同樣的問題,這意味着它在服務器上,而不是ssms。數據庫中是否存在某種設置來確定數據庫是否檢查存儲過程的語法?請幫忙!
澄清: 我知道語法是錯誤的。問題在於,即使SSMS引用了一個不存在的表,SSMS也允許我執行CREATE或ALTER語句而不會出錯。我希望它失敗。通常它會,但由於某種原因,它突然停止發出錯誤。我想讓它給我錯誤。我該怎麼做呢?
長話短說,你不能。 [這個問題](http://stackoverflow.com/questions/8713129/sql-server-avoid-deferred-compilation)涵蓋了同樣的問題。 – Pondlife
我編寫了一個腳本來嘗試編譯存儲過程,並提醒我們是否有數據庫更改打破了其中的任何一個,並且我發現它有時會提醒我們並且有時仍會編譯。最奇怪的是,我們有一個存儲過程不止一次地引用了一個刪除的表,並且當試圖編譯時,它在一個引用上拋出一個錯誤,然而在修復了一個它沒有錯誤編譯的引用之後,即使這個EXACT同一張表在存儲過程的其他部分被引用! 根據您的經驗,您有任何見解嗎? – Shock