溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ASP.NET 2.0中怎么調(diào)試存儲過程

發(fā)布時(shí)間:2021-07-27 17:12:44 來源:億速云 閱讀:122 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了ASP.NET 2.0中怎么調(diào)試存儲過程,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

第一步:直接進(jìn)入儲存過程

  使用Visual Studio我們可以很容易地直接進(jìn)入一個(gè)數(shù)據(jù)庫對象。我們來看如何使用Direct Database Debugging (DDD)特性進(jìn)入Northwind數(shù)據(jù)庫里的Products_SelectByCategoryID存儲過程.就像其名字揭示的那樣,該存儲過程返回特定category的產(chǎn)品信息。我們在第68章創(chuàng)建了該存儲過程,在服務(wù)器資源管理器里展開Northwind數(shù)據(jù)庫節(jié)點(diǎn),接下來進(jìn)入存儲過程文件夾,在Products_SelectByCategoryID存儲過程上右鍵單擊,選“Step Into Stored Procedure”,這將打開調(diào)試器.因?yàn)樵摯鎯^程接受一個(gè)@CategoryID輸入?yún)?shù),我們輸入1,這將返回“飲料”類產(chǎn)品的信息。

ASP.NET 2.0中怎么調(diào)試存儲過程
圖1:使用值為“1”的@CategoryID輸入?yún)?shù)

  指定@CategoryID參數(shù)的值后,就可以執(zhí)行存儲過程了.不過調(diào)試器執(zhí)行完第一條Statement后就中止了,而不會完全運(yùn)行存儲過程.。注意邊框上的黃色箭頭,它指出了Statement在存儲過程的當(dāng)前位置.你可以在Watch窗口查看或編輯參數(shù)值,或者改寫存儲過程用到的參數(shù)名稱.

ASP.NET 2.0中怎么調(diào)試存儲過程
圖2:調(diào)試器調(diào)試完第一條Statement后就中止了

  希望一次只調(diào)試一條statement語句的話,點(diǎn)擊工具欄上的“Step Over”按鈕或按F10鍵。由于Products_SelectByCategoryID存儲過程只包含了一條SELECT statement,所以按F10鍵將跨過這條語句并完成存儲過程的執(zhí)行。執(zhí)行完畢后,其結(jié)果將顯示在 Output窗口里,調(diào)速器也就中止了.

注意:T-SQL調(diào)試發(fā)生在statement級別,但對SELECT statement無效

第二步:為Website設(shè)置應(yīng)用程序調(diào)試

  直接在服務(wù)器資源管理器里調(diào)試存儲過程時(shí)需要手動設(shè)置,但很多時(shí)候我們感興趣的是,當(dāng)在ASP.NET應(yīng)用程序里調(diào)用存儲過程時(shí)才對其進(jìn)行調(diào)試。當(dāng)一個(gè)設(shè)置了斷點(diǎn)的存儲過程被應(yīng)用程序調(diào)用,在執(zhí)行過程中將遇到這個(gè)斷點(diǎn)。我們可以查看和改變存儲過程的參數(shù)值,就像我們在第一步做的那樣.

  不過在次此之前我們需要將ASP.NET web應(yīng)用程序與SQL Server調(diào)試器聯(lián)系起來.在解決方案資源管理器里,在website名稱(ASPNET_Data_Tutorial_74_CS)上右鍵單擊,選“Property Pages”項(xiàng),再在左邊選“Start Options”,選中Debuggers區(qū)域的SQL Server選擇框,如圖3:

ASP.NET 2.0中怎么調(diào)試存儲過程
圖3:在應(yīng)用程序的屬性頁選擇SQL Server方框

  另外,我們還要更新數(shù)據(jù)庫連接字符串以禁用“連接池”。當(dāng)關(guān)閉一個(gè)數(shù)據(jù)庫的連接時(shí),一個(gè)對應(yīng)的SqlConnection對象將存放在連接池里。當(dāng)建立一個(gè)數(shù)據(jù)庫連接時(shí),就可以重新獲取該SqlConnection對象而用不著再創(chuàng)建一個(gè)新的連接.連接池提高了執(zhí)行性能,默認(rèn)時(shí),其處于激活狀態(tài).不過在調(diào)試時(shí)我們將關(guān)閉連接池,因?yàn)樘幚韽倪B接池檢索來的連接時(shí),不能正確的建立相應(yīng)的調(diào)試基礎(chǔ)構(gòu)造(debugging infrastructure).

  要禁用連接池的話,更新Web.config文件的NORTHWNDConnectionString,包含一個(gè)“Pooling=false”設(shè)置.

<connectionStrings>
 <add name="NORTHWNDConnectionString" connectionString=
 "Data Source=./SQLEXPRESS;AttachDbFilename=|DataDirectory|/NORTHWND.MDF;
  Integrated Security=True;User Instance=True;Pooling=false"
 providerName="System.Data.SqlClient" />
</connectionStrings>

  注意:一旦你完成從ASP.NET應(yīng)用程序?qū)QL Server的調(diào)試后,務(wù)必還原連接池,在連接字符串里將Pooling設(shè)置刪除或設(shè)置為“Pooling=true”.

  完成設(shè)置后,我們還需要對存儲過程添加一個(gè)斷點(diǎn),并開始調(diào)試

第三步:添加斷點(diǎn)并調(diào)試

  打開Products_SelectByCategoryID存儲過程,在SELECT  statement的開頭部分設(shè)置斷點(diǎn)。方法點(diǎn)擊邊框恰當(dāng)?shù)牡胤交驅(qū)⒐鈽?biāo)放在SELECT  statement開始的地方再按F9。如圖9所示,斷點(diǎn)在邊框呈現(xiàn)為一個(gè)紅色圓點(diǎn).

ASP.NET 2.0中怎么調(diào)試存儲過程
圖4:在Products_SelectByCategoryID存儲過程設(shè)置斷點(diǎn)

  為了在客戶端程序?qū)σ粋€(gè) SQL 數(shù)據(jù)庫對象進(jìn)行調(diào)試,我們有必要設(shè)置數(shù)據(jù)庫支持“應(yīng)用程序調(diào)試”(application debugging),在服務(wù)器資源管理器里點(diǎn)到NORTHWND.MDF節(jié)點(diǎn),右鍵單擊,選“Application Debugging”.

ASP.NET 2.0中怎么調(diào)試存儲過程
圖5:確保選中Application Debugging 項(xiàng)

  當(dāng)設(shè)置好斷點(diǎn)且激活“Application Debugging ”項(xiàng)時(shí),我們就可以從ASP.NET 應(yīng)用程序調(diào)用存儲過程來進(jìn)行調(diào)試。要調(diào)試的話,在“調(diào)試”菜單里選“開始調(diào)試”,或點(diǎn) F5或點(diǎn)工具欄里的綠色小圖標(biāo)。這將開啟調(diào)試器.

  Products_SelectByCategoryID存儲過程是在第68章創(chuàng)建的,其對應(yīng)的頁面(~/AdvancedDAL/ExistingSprocs.aspx)包含了一個(gè)GridView控件,以顯示該存儲過程返回的結(jié)果.在瀏覽器里登錄該頁面,當(dāng)執(zhí)行過程遇到設(shè)置的斷點(diǎn)時(shí)頁面將返回到Visual Studio,就像在第一步看到的那樣,我們可以進(jìn)入存儲過程的statements,查看并修改參數(shù)值.

ASP.NET 2.0中怎么調(diào)試存儲過程
圖6:ExistingSprocs.aspx頁面最開始顯示的是 飲料類的產(chǎn)品

ASP.NET 2.0中怎么調(diào)試存儲過程
圖7:執(zhí)行到存儲過程設(shè)置的斷點(diǎn)

  在如圖7所示的 Watch 窗口,參數(shù)@CategoryID的值為1,這是由于ExistingSprocs.aspx頁面最開始顯示的是飲料類產(chǎn)品的信息,而飲料類的CategoryID 值為1.在下拉列表里選擇一個(gè)不同的值。這將導(dǎo)致頁面回傳并重新執(zhí)行Products_SelectByCategoryID存儲過程。再次遇到斷點(diǎn)時(shí),@CategoryID 參數(shù)的值就是你在下拉列表框里選擇的CategoryID值.

ASP.NET 2.0中怎么調(diào)試存儲過程
圖8:在下拉列表里選擇一個(gè)不同的類

ASP.NET 2.0中怎么調(diào)試存儲過程
圖9:參數(shù)@CategoryID反映的是在Web頁面選擇的類

  注意:如果你登錄ExistingSprocs.aspx 頁面時(shí),沒有碰到在Products_SelectByCategoryID存儲過程里設(shè)置的斷點(diǎn),一定要確保ASP.NET應(yīng)用程序的“屬性頁”的 Debuggers區(qū)域的SQL Server項(xiàng)被選中;關(guān)閉連接池;激活數(shù)據(jù)庫的Application Debugging項(xiàng).如果仍然還有問題的話,重新啟動Visual Studio并再試一次.

調(diào)試T-SQL 數(shù)據(jù)庫對象的遠(yuǎn)程實(shí)例

  在本地電腦上通過Visual Studio調(diào)試是比較直觀容易的,但如果SQL Server和Visual Studio沒有裝在同一臺機(jī)器上的話,我們需要做一些設(shè)置以使各方面工作正常,為此我們要做2方面的工作:

.確保以系統(tǒng)管理員的角色(sysadmin role)通過ADO.NET連接到數(shù)據(jù)庫

.確保開發(fā)環(huán)境上Visual Studio使用的Windows user帳戶是一個(gè)有效的屬于系統(tǒng)管理員的角色(sysadmin role)的SQL Server登錄帳戶.

  第一項(xiàng)相對比較簡單.首先確定從ASP.NET應(yīng)用程序連接到數(shù)據(jù)庫的用戶帳戶,接下來通過SQL Server Management Studio,將該帳戶添加到sysadmin角色.

  第二項(xiàng),你用來調(diào)試程序的Windows user帳戶必須是連接到遠(yuǎn)程數(shù)據(jù)庫的一個(gè)有效帳戶,問題就在于你在本地工作站登錄的Windows帳戶不一定就是登錄SQL Server的有效帳戶.與其將你具體的登錄帳戶添加給SQL Server,一個(gè)更好的選擇是將一些Windows user帳戶分配為SQL Server調(diào)試帳戶(SQL Server debugging account).然后,要調(diào)試一個(gè)遠(yuǎn)程SQL Server實(shí)例的數(shù)據(jù)庫對象的話,你可以使用這些Windows登錄帳戶的認(rèn)證(credentials)來運(yùn)行Visual Studio.

  用一個(gè)例子來進(jìn)行闡述。假設(shè)有個(gè)Windows帳戶,名為SQLDebug.該帳戶應(yīng)該添加到遠(yuǎn)程SQL Server實(shí)例,以系統(tǒng)管理員角色進(jìn)行合法登錄.然后要從Visual Studio來調(diào)試遠(yuǎn)程SQL Server實(shí)例的話,我們應(yīng)該以SQLDebug帳戶來運(yùn)行Visual Studio.于是我們可以這樣來操作:退出我們的工作站,以SQLDebug帳戶再次登錄,然后運(yùn)行Visual Studio.不過還有一個(gè)更簡單點(diǎn)的方法,不用退出工作站,通過使用runas.exe來以SQLDebug的名義運(yùn)行Visual Studio.這個(gè)runas.exe允許一個(gè)應(yīng)用程序假借另一個(gè)帳戶的名義來執(zhí)行.要以SQLDebug的名義來運(yùn)行Visual Studio的話,你可以在命令行鍵入如下的statement:

runas.exe /user:SQLDebug "%PROGRAMFILES%/Microsoft Visual Studio 8/Common7/IDE/devenv.exe"

上述內(nèi)容就是ASP.NET 2.0中怎么調(diào)試存儲過程,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI