逐步解說:偵錯 T-SQL 觸發程序
更新:2007 年 11 月
這個主題適用於:
版本 |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express 版 |
||||
Standard 版 |
||||
Pro/Team 版 |
表格圖例:
套用 |
|
不套用 |
|
預設隱藏的命令。 |
若要偵錯觸發程序,請在導致引發觸發程序的預存程序中設定中斷點、在觸發程序中設定中斷點,然後依照逐步解說:偵錯 T-SQL 預存程序所述的程序繼續執行。
這個範例會使用 AdventureWorks 資料庫,該資料庫中具有使用 UPDATE 觸發程序的 Sales.Currency 資料表。這個範例包含會更新資料表中資料列的預存程序,它會因此導致引發觸發程序。在觸發程序中設定中斷點,然後藉由使用不同的參數執行預存程序,就可以遵循觸發程序中不同的執行路徑。
注意事項: |
---|
您所看見的對話方塊與功能表命令可能會與 [說明] 中所描述的有所不同,視您所使用的設定或版本而定。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要偵錯 SQL 觸發程序
在新的 SQL Server 專案中,建立與 [AdventureWorks] 範例資料庫的連接。如需詳細資訊,請參閱 HOW TO:連接資料庫。
使用下列第一個範例區段的程式碼建立新的預存程序,並將其命名為 UpdateCurrency_T_SQL。如需詳細資訊,請參閱 HOW TO:使用 SQL Server 專案類型開發。
在 UpdateCurrency_T_SQL 設定中斷點。這是選擇性的,因為「直接資料庫偵錯」會導致程序中的第一行被當做中斷點。
設定觸發程序的中斷點。
以滑鼠右鍵按一下 [資料表] 節點,然後以滑鼠右鍵按一下 Sales.Currency 資料表的節點,再按兩下名為 [uCurrency] 的觸發程序圖示,便可開啟觸發程序原始程式碼。
在 SET NOCOUNT ON 陳述式旁邊的灰色邊界中按滑鼠左鍵,以便在觸發程序中設定中斷點。這個步驟不是選擇性的:如果不在觸發程序中設定中斷點,當您嘗試逐步執行至觸發程序時,則會略過其程式碼。
逐步執行至預存程序。如需詳細資訊,請參閱 HOW TO:使用伺服器總管逐步執行物件。
接著會出現要求輸入參數值的 [執行預存程序] 對話方塊。
設定下列參數值:
@currencyCode = AAA
@name = 任意值,例如 My Test Name。
指令指標的黃色箭頭會出現在 SET @mynvarchar = @@VERSION 行上,也就是預存程序中第一個可執行的程式碼行。
嘗試不同的偵錯功能。
使用 F11 鍵或 [逐步執行] 按鈕逐步執行程式碼。
當您在 UPDATE 陳述式再次按下 F11 時,將會逐步執行至觸發程序。
在結束返回預存程序之前,逐步執行觸發程序,然後繼續到結尾處。
您可以在 [伺服器總管] 以滑鼠右鍵按一下 [資料表] 下方的 [Sales.Currency] 節點,然後按一下 [顯示資料表資料],以驗證是否有插入資料。
範例
下列是導致引發觸發程序的預存程序程式碼。
ALTER PROCEDURE dbo.UpdateCurrency_T_SQL
(
@currencyCode nvarchar(3),
@Name nvarchar(50)
)
AS
SET NOCOUNT ON
UPDATE Sales.Currency
SET Name = @Name
WHERE CurrencyCode = @currencyCode
RETURN