[SQL]沒有辦法在 SSMS 下針對 SQL 語法進行偵錯 ?

並非所有 SSMS 或 Visual Studio 的版本都可以對 SQL 語法進行偵錯,在使用上還是要注意一下可以搭配的版本

還記得在一年多之前( 2020/09 ) 的時候,當時曾經獲邀到 SQL Pass 的研討會上,分享在使用 SSMS 上的一些常用功能。剛好也有些公司內的同事知道了,因此也提供相關資料給他們參考,而最近收到一些回饋,有幾個問題都是有關於「如何在 SSMS 下針對 SQL 指令來偵錯」,難道只能用一堆的 PRINT 來進行測試嗎 ?

其實這個本來是一個不存在的問題,在 SSMS v18 之前的版本,基本上都是具有「偵錯」的功能

但是從 SSMS v18 的版本開始,Microsoft 縮小了 SSMS 的大小,並且讓 SSMS 跟 SQL Server 的相依性不要那麼高,避免與 SQL 引擎共用元件,因此做了一些瘦身改版的計畫。雖然從外觀上看起來,似乎功能的差異並沒有太大,但如果我們查看官方的說明文件,可以在說明中的關於已淘汰和移除的功能中,第一項就列上了移除「T-SQL 偵錯工具」。

也因此當我們現在使用 SSMS v18 的版本的時候,畫面上已經沒有看到偵錯的相關功能的 Menu 和按鈕了。


目前看起來這個功能似乎在目前的版本中很難再被加回來,但如果我們需要使用偵錯的,那該怎麼來進行處理呢 ? 那麼 Visual Studio 將會是您一個不錯的選擇工具,您可以在安裝 Visual Studio 的時候 ( 我以 Visual Studio Community 2022 為例 ),記得要選擇「資料儲存和處理」

安裝好之後,您可以在開啟 Visual Studio 之後,利用 CTRL+ALT+S 或者是用選單選擇「檢視」→「伺服器總管」

接著利用「資料連接」來連上您所要使用的資料庫

在連上您的資料庫之後,就可以利用「新增查詢」來開啟工作區,就可以在這個工作區內下指令來進行測試了。

因此當今天我們有段語法要測試的時候,我們就可以用 ALT+F5 或者是利用選單選擇「使用偵測工具執行」來進行逐步執行進行偵錯。以下面這個例子

當我進行偵錯的時候,可以利用 F10 逐步往下執行,當我遇到要執行一個 Stored Procedure,我也可以選擇 F11 進入到 SP 裡面來看 SQL 運行的狀況。

但很不幸的,目前在 VS 2022 下面,即便是到 17.0.5 的版本,還是沒有辦法 Drill-Down 的方式往下進行偵錯 ( 在社群的討論中看起來,微軟似乎知道了這個問題,但尚未表示何時可以修正,有興趣可以參考此連結  )。

因此以目前來說,對於需要針對 SQL 指令來偵錯的情況,一種是選擇 SSMS v17 或之前的版本,另外一種就是選擇 Visual Studio 2019 含之前的版本。或許不久的將來 Visual Studio 會修正這個異常,那麼也就可以不限制 Visual Studio 的版本了。


這裡補上一個使用 Visual Studio 2019 版本的測試狀況 , 當我們使用偵錯的方式到執行 Stored Procedure 的時候。

接下來我們就按下 F11 , 就可以看到 Visual Studio 很貼心的幫我們 Trace 到 Stored Procedure , 這樣在除錯上就相對方便多了。