大多數開發人員都自豪地宣稱他們編寫的代碼是沒有錯誤的,但是實際上我們都知道錯誤,不論是邏輯上的還是物理上的,都會發生在最好的項目里。也就是說,軟件開發過程中最耗時間的任務之一就是調試。 SQL的“服務器調試界面”(SDI)能夠從“查詢分析器”客戶端進入。找到“查詢分析器對象瀏覽器”里的存儲過程,見圖A,再右擊要操作的過程名稱,會彈出一個菜單,菜單上有“調試”選項。在你能夠使用SDI以前,SQL服務器管理員必須給你足夠的訪問權限,所以要查一查確保你有這個權限。 圖A 查詢分析器”提供了存儲過程“調試”選項 調試界面 一旦選擇了“調試”選項,圖B里的對話框會出現。它能讓你為存儲過程提供任何所需要的參數。一旦輸入了參數,點擊OK按紐開始調試過程。 圖B 為了說明問題,我選擇了位于Northwind數據庫里的SalesByCategory存儲過程。我加入了圖B(@CategoryName=Beverages和@OrdYear=1996)里的參數就開始進行調試了。你一次只能進行一個調試過程。圖C是允許你使用代碼的調試窗。 圖C 這個調試窗口一共有五個面板。最大的顯示框是主代碼面板;它顯示著當前正在執行的存儲過程的代碼,還包含有大量控制按鈕(我會在后面談到它們)。緊挨在主顯示框下面最左邊的面板包含有局部變量,包括傳遞給過程的參數和代碼里聲明的變量。中間的面板包含有全局變量,右邊的面板是調用棧,其中包含有執行過程的列表。如果某個過程調用另一個過程,這個調用棧就會擴展。最底部的面板顯示著正在運行的過程的輸出結果,不論是錯誤的結果還是所預期的結果。注意,圖C例子里的被傳遞的值是在圖B局部變量里輸入的。 調試器的值是在執行待考察代碼時它給你提供的自由。例如,你可以在存儲過程中設置斷點,執行會在斷點中斷直到你讓它繼續執行。在SDI里,使用功能鍵(F9)和選擇主代碼窗上面的按鈕都可以設置斷點和特性。一共有十一個按鈕,我把它們列在了表A里。 表A
繼續執行(F5) 設置或者取消斷點(F9) 去掉所有的斷點(CTRL + SHIFT + F9) 進入代碼,執行一行(F11) 跳過代碼;執行這一行,但是不進入從函數或者另一個存儲過程調用的代碼(F10) 離開代碼;完成函數或者存儲過程代碼的執行;把控制權返回給調用代碼(SHIFT + F11) 跳到光標處(SHIFT + F10) 重新啟動代碼(SHIFT + CTRL + F5) 停止調試(SHIFT + F5) 開啟/關閉自動回滾 幫助(F1)
我們都曾經追蹤過難以琢磨的錯誤,因此,大多數開發工具包都會包括調試工具,用以幫助查找錯誤。非常感謝微軟從6.5版開始就向SQL服務器環境里加入了這樣一個工具。讓我們更加仔細地看看這個順手的工具,看在日常編程的工作中如何使用它。
它在哪兒?
你可以利用這些按鈕的優勢來幫你進行調試過程。它們能讓你執行代碼并查看變量的內容。此外,還可以用所需要的值對局部變量進行編輯和替換。圖D顯示了輸出面板里示例參數的結果。
圖D
SDI會拖累運行它的服務器的資源,所以應該嚴格地將其使用限制到開發或者測試環境里。你不能在調試過程中編輯代碼。
SQL的“服務器調試界面”是對SQL開發人員任何工具集強有力的補充。調試是必需的,不論你是在使用自己的存儲過程還是跳到另一個開發人員的程序里。在你下一個項目里好好利用這個工具的優勢吧。