SSMS--T-SQL偵錯工具教學

網頁寫久了都知道,我們比較不希望在頁面裡留下T-SQL,而且應該讓網頁只做網頁的工作,資料庫的事就交給資料庫,所以會慢慢走向Store Procedure、View…,頁面裡只有留下「Store Procedure Name / View Name」及「傳遞的參數」等就好。但寫Store Procedure或View…等畢竟是在SSMS工具裡執行,所以我們要學學SSMS裡的T-SQL偵錯工具。

其實SSMS的偵錯工具很簡單,如果你使用過Visual Studio開發工具,那差不多是一個樣子,設「中斷點」然後執行「偵錯」,我們先寫一段簡單的T-SQL程式:

declare @v1 int=1  -- 初始化
declare @v2 int

select @v2=MAX(ProductID) -- 應該是77
from Northwind.dbo.Products

while (@v1 <= @v2)
begin
 select *
 from Northwind.dbo.Products
 where ProductID = @v1
 
 set @v1 += 2 -- 在這裡設中斷點, 我們想取得單數行(1,3,5,7,9...)
end;


設好中斷點,我們就按下「偵錯」,


就會開始偵錯程序,此時T-SQL並不會執行,而是會等待你給它「動作」指令,它才會一行一行或一步一步的執行,


透過「偵錯工具」可以控制T-SQL的執行流程,黃色箭頭代表「下一行要執行的T-SQL陳述式」,所以一開始是停在第一行(一開始並未執行,未執行的下一行就是第一行);再看畫面下方,


「區域變數」最重要,可以看到我們變數的變化,這對我們偵錯很重要。


「呼叫堆疊」會顯示目前的執行位置、中斷點的管理,輸出是顯示各種訊息。接下來的操作大多是在「偵錯工具」及查看「區域變數」的變化。


黃色箭頭之下各代表「逐行執行」、「不進入函式」、「跳離函式」,如果你非常確定函式不會出錯,那就可以使用「不進入函式」、「跳離函式」來加速偵錯程序,我們按幾次「逐行執行」後來看結果:


我剛執行完「set @v1 += 2」這一行,所以下一行要執行的T-SQL陳述式是「While (@v1 <= @v2)」,


看看「結果」是否有跑出我們預期的結果,1、3、5、7…是我們要的,


查看「區域變數」的變化,是否符合我們預期;完成偵錯後,就按下「停止偵錯」即可。

在MS SQL Server 2008中透過SSMS工具,我們能夠很方便的進行偵錯,這是一件很棒的事。不用看著網頁上一大堆的錯誤訊息,然後再回程式碼修改T-SQL,再重新執行網頁,再看著錯誤訊息,再回程式碼修改T-SQL…無窮迴圈。

就算你是把T-SQL寫在網頁程式碼裡,也應該在SSMS先測試無誤後,再放入到網頁程式碼中,這樣才能確保T-SQL是正確無誤,以減少不必要的錯誤。

T-SQL就應該交給專家,而SSMS就是MS SQL Server的T-SQL專家。

Reference:

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。