2014-10-16 78 views
0

創建或更改SQL Server(2008+)存儲過程時,是否「運行」存儲過程的內容或僅檢查語法錯誤?我一直覺得它只是檢查語法。在更新/創建期間創建/更改存儲過程超時

我有一個相當簡單的存儲過程,它調用幾個子過程,其中一個連接到鏈接服務器(mysql數據庫)以從中取回信息。進行任何例行更新將導致整個過程運行,並且在更改之前經常超時。我可以確認它正在運行部分代碼,因爲它從mysql表中「拉」出數據。

我一直在尋找,看看它是SSMS選項還是僅僅是因爲我使用的是鏈接服務器。

任何想法或建議,將不勝感激。

+0

檢查你的連接,將它連接起來的唯一的東西...打開一個新的查詢窗口,把一些選擇語句,並檢查..第二件事postbthe錯誤在這裏 – 2014-10-16 18:51:52

+0

我不關心查詢的內容或性能,但是,如果默認情況下,SQL Server將執行存儲過程作爲CREATE/ALTER的一部分。如果是這樣,這可以禁用? – user2162331 2014-10-16 18:56:36

+0

據我所知,我從來沒有一個CREATE/ALTER執行存儲過程。你確定你沒有改變任何表嗎? – Paparazzi 2014-10-16 19:42:40

回答

0

默認情況下,查詢被髮送到解析器。

「解析查詢

當你傳遞一個T-SQL查詢的SQL Server系統,首先它去是關係引擎。[1]

由於T-SQL到達,它通過一個過程來檢查T-SQL是否正確寫入,它是否正確形成,這個過程稱爲查詢解析。解析器過程的輸出是一個解析樹或查詢樹(或者甚至是序列樹)。分析樹表示執行已請求查詢所需的邏輯步驟。「

https://www.simple-talk.com/sql/performance/execution-plan-basics/

通過查詢解析過程步驟。這就是你在「運行」sql時混淆的一步。

+0

因此,解析確實是「執行/運行」存儲過程中的SQL代碼,是否正確? – user2162331 2014-10-16 22:40:24