存储过程系列之调试存储过程 SQL Server 2005
在數(shù)據(jù)庫中直接調(diào)試
? 在數(shù)據(jù)庫中直接調(diào)試是調(diào)試SQL Server 2005的存儲過程的最簡單的方法。 在Visual Stuido的IDE中你可以選擇單步執(zhí)行存儲過程,然后就可以一條語句一條語句地單步執(zhí)行了,同時(shí)你也可以檢查和修改存儲過程內(nèi)的T-SQL變量和參數(shù)。本文結(jié)尾處提供下載的壓縮包中包括一個SQL Server 2005 Express版本的Northwind數(shù)據(jù)庫。我在其中添加了一個名為“DoThings”的存儲過程,它有一個參數(shù)@CategoryID。這是一個沒什么實(shí)用價(jià)值的存儲過程,但是它有很多的T-SQL語句和變量,另外還有一個參數(shù),這將使我們能更好地練習(xí)存儲過程的調(diào)試。
? 在服務(wù)器資源管理器中右鍵單擊“DoThings”存儲過程,然后選擇單步執(zhí)行存儲過程的選項(xiàng)。 (注意:SQL Server調(diào)試只有Team Systems和Professional版本的Visual Studio才支持。)
? 調(diào)試器啟動并且執(zhí)行存儲過程。因?yàn)榇鎯^程“DoThings”需要一個傳入值給@CategoryID,所以會彈出一個對話框讓我們提供該值。輸入1后單擊OK。
?
首先會執(zhí)行第一條語句。你可以選擇逐語句或逐過程進(jìn)行調(diào)試(快捷鍵分別為F11和F10),也可以在監(jiān)視窗口中添加參數(shù)和變量。存儲過程調(diào)試期間的截屏如下圖所示。左側(cè)的黃色箭頭指的是當(dāng)前執(zhí)行的語句。監(jiān)視窗口中顯示的是@CategoryID和@AvgPrice的類型和值。
? 存儲過程知行完后,結(jié)果會顯示在輸出窗口中。
? 你可以看到,在數(shù)據(jù)庫中直接調(diào)試存儲過程是非常簡單的,而且很好理解。簡單到你只需要在服務(wù)器資源管理器中,右鍵單擊存儲過程,然后選擇單步執(zhí)行存儲過程即可。
在ASP.NET程序中調(diào)試數(shù)據(jù)庫對象
? 數(shù)據(jù)庫中直接調(diào)試可以讓我們非常簡單地在Visual Studio IDE里直接調(diào)試存儲過程。但是,有的時(shí)候我們需要在ASP.NET程序調(diào)用相關(guān)的存儲過程的時(shí)候再調(diào)試。這樣,當(dāng)某個數(shù)據(jù)庫對象被調(diào)用的時(shí)候,我們就可以對其進(jìn)行調(diào)試。
? 這種調(diào)試方法整合到了應(yīng)用程序的調(diào)試之中。 要使用它需要做如下幾步:
? ·給你想要調(diào)試的數(shù)據(jù)庫對象添加斷點(diǎn)。 數(shù)據(jù)庫對象只有在包含斷點(diǎn)的情況下才會被調(diào)試。例如,一般情況下,應(yīng)用程序在調(diào)用存儲過程的時(shí)候,你是不能進(jìn)入存儲過程內(nèi)部的,如果你想調(diào)試存儲過程,那就必須要在存儲過程內(nèi)部設(shè)置斷點(diǎn)。
? ·配置應(yīng)用程序,使其可以調(diào)試SQL Server對象。這個比較容易,你只要選中一個復(fù)選框即可。
? ·禁用連接池。 連接池可以提高性能,它允許程序使用一個連接池中的某個空閑的連接來連接數(shù)據(jù)庫。如果啟用它,就不能正確地調(diào)試了。因?yàn)槟J(rèn)情況下是啟用連接池的,所以我們必須在設(shè)置連接字符串的時(shí)候禁用它。(當(dāng)你完成了在ASP.NET程序中調(diào)試SQL Server對象的工作之后,一定要記得重新啟用連接池)
? 接下來讓我們來看一看這幾個步驟具體該如何做。
? 首先,在Visual Studio中打開“DoThings”存儲過程,然后在“DECLARE @AvgPrice money”這句上設(shè)置斷點(diǎn)。 這樣第一步就完成了,接下來做第二步。
? 配置ASP.NET程序,以使其支持SQL Server的調(diào)試。右鍵單擊項(xiàng)目,然后選擇屬性。此時(shí)將會彈出一個如下圖所示的對話框。 選擇啟動選項(xiàng),然后在“調(diào)試器”部分中選中“SQL Server”復(fù)選框。這樣就完成前兩步了,還差最后一步。
? 最后一步,我們需要修改連接字符串,使其禁用連接池。這個任務(wù)相當(dāng)簡單,你只要在你的連接字符串后加一個屬性“Pooling=false”即可。假設(shè)你將連接字符串信息定義在了Web.config的<connectionString>節(jié)點(diǎn)里,那么修改后的連接字符串如下所示:
現(xiàn)在,我們已經(jīng)完成了這3個步驟。 為了演示如何調(diào)試,我們來創(chuàng)建一個調(diào)用“DoThings”存儲過程的ASP.NET頁。本文結(jié)尾處你下載的Demo中就包含有這個頁面。當(dāng)你調(diào)試ASP.NET程序并且訪問了這個頁的時(shí)候,程序就會暫停在存儲過程中設(shè)置了斷點(diǎn)的地方。然后,你就可以單步執(zhí)行存儲過程,并且可以在監(jiān)視窗口中查看和修改參數(shù)和變量的值,就像在數(shù)據(jù)庫中直接調(diào)試存儲過程一樣。
?
結(jié)論
? 在SQL Server之前的版本中有一套用于調(diào)試存儲過程的獨(dú)立工具。 到了現(xiàn)在的SQL Server 2005,存儲過程、觸發(fā)器和用戶自定義函數(shù)(UDFs)都是通過Visual Studio Team System和Professional版本來調(diào)試的。 它給我們帶來了3種調(diào)試SQL Server的方法:數(shù)據(jù)庫中直接調(diào)試、應(yīng)用程序調(diào)試和在SQL Server項(xiàng)目中調(diào)試。本文中,我們一起研究了前兩種調(diào)試方法(使用本地?cái)?shù)據(jù)庫)。
總結(jié)
以上是生活随笔為你收集整理的存储过程系列之调试存储过程 SQL Server 2005的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: passwd 修改用户密码
- 下一篇: memcached的最佳实践方案(转)