校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 在ASP.NET 2.0中操作數據之七十二:調試存儲過程

在ASP.NET 2.0中操作數據之七十二:調試存儲過程

熱門標簽:網絡電話外呼系統上海 外呼電話機器人成本 聯通官網400電話辦理 地圖標注軟件免費下載 百應電話機器人外呼系統 400電話辦理怎么樣 臨沂智能電話機器人加盟 蘇州如何辦理400電話 西寧呼叫中心外呼系統線路商

導言:

  Visual Studio有很多的調試功能.我們只需要稍稍點點鼠標,敲敲鍵盤就可以使用斷點(breakpoints)來打斷某個程序的執行,并查看其狀態.除了調試代碼以外,Visual Studio也支持對SQL Server里面的存儲過程進行調試.就像可以在ASP.NET頁面的后臺代碼類或Business Logic Layer class類里設置斷點一樣,我們也可以在存儲過程里設置斷點.

  本文我們將考察如何在Visual Studio的Server Explorer里進入存儲過程并設置斷點.當ASP.NET程序調用該存儲過程時就會碰到該斷點.

  注意:不幸的是只能在Visual Studio的Professional和Team Systems版本里才能對存儲過程設置斷點.如果你使用的是Visual Web Developer或Visual Studio的標準版,你就只能看教程是如何一步步的做的,但不能在自己的機器上實踐.

SQL Server調試主題

  Microsoft SQL Server 2005集合了公共語言運行庫(Common Language Runtime (CLR)),它可以被所有.NET模塊使用.因此SQL Server 2005支持對數據庫對象的管理.

  我們可以創建數據庫對象,比如存儲過程、用戶定義的函數((UDFs)等,就像在一個C#類里定義的方法一樣.你可以在從.NET Framework或自己定義的類里使用這些存儲過程和自定義函數.當然,SQL Server 2005也支持T-SQL數據庫對象.SQL Server 2005支持對T-SQL數據庫對象以及管理數據庫對象(managed database objects)的調試.不過只能在Visual Studio 2005專業版或Team Systems版本里才行.本文我們將考察對T-SQL數據庫的調試.后面的教程我們將考察對管理數據庫對象的調試.文章《Overview of T-SQL and CLR Debugging in SQL Server 2005》(http://blogs.msdn.com/sqlclr/archive/2006/06/29/651644.aspx)歸納了在Visual Studio里調試SQL Server 2005對象的3種途徑:

.直接數據庫調試(DDD)—在服務器資源管理器里進入某個T-SQL數據庫對象,比如存儲過程或用戶定義函數UDFs.我們將在第一步考察該模式.

.應用程序調試—我們可以在一個數據庫對象里設置斷點,然后再返回到一個ASP.NET應用程序.當執行這些數據庫對象時,將遇到斷點并轉到調試器.注意,在應用程序調試模式,我們不能在應用程序代碼里打入一個數據庫對象,所以我們必須直接在這些存儲過程或用戶義函數里設置斷點.我們將在第二步考察該模式.

.通過一個SQL Server Project來調試

  Visual Studio專業版及Team Systems版包含一個SQL Server Project類型,它通常用來創建管理數據庫對象(managed database objects),我們將在后面的教程考察SQL Server Projects及如何調試其內容.Visual Studio可以對本地或外部SQL Server實例進行調試。如果你使用的SQL Server數據庫不在本地,那么自然,它就是一個外部實例.本文我們將使用本地SQL Server實例,調試外部SQL Server實例的存儲過程要比調試本地的多出一些步驟.

  如果你使用的是一個本地SQL Server實例,那么你可以從第一步看到結尾.如果你使用的是外部SQL Server實例,那么你首先要確保是以Windows user帳戶登錄電腦,且包含一個連接到外部SQL Server實例的登錄界面.此外,應全部以系統管理員角色登錄.你可以參閱本文結尾的“Debugging T-SQL Database Objects on Remote Instances”部分,查看如何配置Visual Studio 和 SQL Server以調試外部實例.

  最后,我們應該明白支持T-SQL數據庫對象調試的特性沒有支持.NET應用程序調試的特性豐富.比如,不支持斷點條件過濾(breakpoint conditions and filters),只能用到寥寥幾個調試窗口;你無法使用Edit 和 Continue等等。更多詳情請參閱文章《Limitations on Debugger Commands and Features》(http://msdn2.microsoft.com/en-us/library/ms165035(VS.80).aspx)

第一步:直接進入儲存過程

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


圖1:使用值為“1”的@CategoryID輸入參數

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


圖2:調試器調試完第一條Statement后就中止了

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

注意:T-SQL調試發生在statement級別,但對SELECT statement無效

第二步:為Website設置應用程序調試

  直接在服務器資源管理器里調試存儲過程時需要手動設置,但很多時候我們感興趣的是,當在ASP.NET應用程序里調用存儲過程時才對其進行調試。當一個設置了斷點的存儲過程被應用程序調用,在執行過程中將遇到這個斷點。我們可以查看和改變存儲過程的參數值,就像我們在第一步做的那樣.

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


圖3:在應用程序的屬性頁選擇SQL Server方框

  另外,我們還要更新數據庫連接字符串以禁用“連接池”。當關閉一個數據庫的連接時,一個對應的SqlConnection對象將存放在連接池里。當建立一個數據庫連接時,就可以重新獲取該SqlConnection對象而用不著再創建一個新的連接.連接池提高了執行性能,默認時,其處于激活狀態.不過在調試時我們將關閉連接池,因為處理從連接池檢索來的連接時,不能正確的建立相應的調試基礎構造(debugging infrastructure).

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

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應用程序對SQL Server的調試后,務必還原連接池,在連接字符串里將Pooling設置刪除或設置為“Pooling=true”.

  完成設置后,我們還需要對存儲過程添加一個斷點,并開始調試

第三步:添加斷點并調試

  打開Products_SelectByCategoryID存儲過程,在SELECT  statement的開頭部分設置斷點。方法點擊邊框恰當的地方或將光標放在SELECT  statement開始的地方再按F9。如圖9所示,斷點在邊框呈現為一個紅色圓點.


圖4:在Products_SelectByCategoryID存儲過程設置斷點

  為了在客戶端程序對一個 SQL 數據庫對象進行調試,我們有必要設置數據庫支持“應用程序調試”(application debugging),在服務器資源管理器里點到NORTHWND.MDF節點,右鍵單擊,選“Application Debugging”.


圖5:確保選中Application Debugging 項

  當設置好斷點且激活“Application Debugging ”項時,我們就可以從ASP.NET 應用程序調用存儲過程來進行調試。要調試的話,在“調試”菜單里選“開始調試”,或點 F5或點工具欄里的綠色小圖標。這將開啟調試器.

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


圖6:ExistingSprocs.aspx頁面最開始顯示的是 飲料類的產品


圖7:執行到存儲過程設置的斷點

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


圖8:在下拉列表里選擇一個不同的類


圖9:參數@CategoryID反映的是在Web頁面選擇的類

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

調試T-SQL 數據庫對象的遠程實例

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

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

.確保開發環境上Visual Studio使用的Windows user帳戶是一個有效的屬于系統管理員的角色(sysadmin role)的SQL Server登錄帳戶.

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

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

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

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

  關于該過程的更詳細介紹請參閱文章《How To: Set SQL Server Permissions for Debugging》(http://msdn2.microsoft.com/en-us/library/w1bhybwz(VS.80).aspx)

  注意:如果你的開發機為Windows XP Service Pack 2版本的話,你需要對Internet連接防火墻進行配置以允許遠程調試。文章《The How To: Enable SQL Server 2005 Debugging》(http://msdn2.microsoft.com/en-us/library/s0fk6z6e(VS.80).aspx)對此進行了描述,該過程包括2步:(a)在Visual Studio所在的主機,你必須向Exceptions list添加Devenv.exe,并打開TCP 135端口;(b)在遠程(SQL)機器,你必須打開TCP 135端口,且向Exceptions list添加Dsqlservr.exe.如果你的域策略(domain policy)需要通過IPSec來進行網絡通信(network communication)的話,你必須打開UDP 4500 和 UDP 500端口。

結語:

  除了支持對.NET程序代碼進行調試外,Visual Studio也提供了對SQL Server 2005進行調試的多種選擇.在本文,我們考察了這些選擇中的2種:直接數據庫調試(Direct Database Debugging)以及應用程序調試.要直接對一個T-SQL數據庫對象進行調試的話,在服務器資源管理器里找到該對象,再右鍵單擊選“Step Into …”. 這將打開調試器,且運行到該對象的第一條statement就終止了.此時,你可以進入該對象的statements,查看并修改參數值.在第一步,我們用該方法對Products_SelectByCategoryID存儲過程進行了設置.

  應用程序調試允許直接在數據庫對象里設置斷點.當一個客戶端程序(比如一個ASP.NET web程序)調用一個包含斷點的數據庫對象時,程序終止且切換到調試器界面。應用程序調試很有用,因為它更清楚的顯示了到底是什么程序行為調用了某個具體的數據庫對象.然而,該方法比直接數據庫調試要多一些配置和步驟.

  數據庫對象也可以通過SQL Server Projects來進行調試,在下一章我們將考察使用SQL Server Projects,以及如何利用其來創建和調試管理數據庫對象(managed database objects)

  祝編程快樂!

作者簡介

  本系列教程作者 Scott Mitchell,著有六本ASP/ASP.NET方面的書,是4GuysFromRolla.com的創始人,自1998年以來一直應用 微軟Web技術。大家可以點擊查看全部教程《[翻譯]Scott Mitchell 的ASP.NET 2.0數據教程》,希望對大家的學習ASP.NET有所幫助。

您可能感興趣的文章:
  • asp.net 結合mysql存儲過程進行分頁代碼
  • asp.net安全、實用、簡單的大容量存儲過程分頁
  • asp.net 存儲過程調用
  • asp.net結合aspnetpager使用SQL2005的存儲過程分頁
  • asp.net sql存儲過程
  • 在ASP.NET中用存儲過程執行SQL語句
  • asp.net利用存儲過程和div+css實現分頁(類似于博客園首頁分頁)
  • 在ASP.NET 2.0中操作數據之六十五:在TableAdapters中創建新的存儲過程
  • 在ASP.NET 2.0中操作數據之六十六:在TableAdapters中使用現有的存儲過程
  • 在ASP.NET 2.0中操作數據之七十三:用Managed Code創建存儲過程和用戶自定義函數(上部分)

標簽:平涼 海西 甘肅 臨夏 中衛 聊城 清遠 慶陽

巨人網絡通訊聲明:本文標題《在ASP.NET 2.0中操作數據之七十二:調試存儲過程》,本文關鍵詞  在,ASP.NET,2.0,中,操作,數據,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在ASP.NET 2.0中操作數據之七十二:調試存儲過程》相關的同類信息!
  • 本頁收集關于在ASP.NET 2.0中操作數據之七十二:調試存儲過程的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产呦萝稀缺另类资源| 国产综合色产在线精品| 久久先锋影音av| 欧美日韩在线一区二区| 国产一区二区福利视频| 亚洲综合免费观看高清在线观看| 亚洲精品在线观看视频| 欧美视频一区二区三区在线观看 | 久久毛片高清国产| 欧美人伦禁忌dvd放荡欲情| 处破女av一区二区| 精品亚洲成a人在线观看| 五月激情综合婷婷| 亚洲一区二区三区四区在线免费观看| 久久久久久久久99精品| 91精品国产欧美一区二区成人| 91看片淫黄大片一级| 国产专区欧美精品| 美女视频网站久久| 日韩精品1区2区3区| 亚洲精品一卡二卡| 亚洲日本在线看| 中文字幕成人在线观看| 久久久久久久综合| 日韩精品一区二区三区视频 | 九九视频精品免费| 日日夜夜一区二区| 亚洲第一福利一区| 一区二区视频在线| 亚洲素人一区二区| 综合欧美亚洲日本| 1区2区3区精品视频| 国产精品久久久久久久久动漫 | 午夜成人在线视频| 亚洲一区在线观看视频| 一区二区三区在线视频观看| 亚洲卡通欧美制服中文| 综合久久给合久久狠狠狠97色 | 国产精品久久久久影院老司| 久久精品视频免费| 久久蜜桃av一区二区天堂 | 成人欧美一区二区三区小说| 国产精品少妇自拍| 亚洲欧洲日产国码二区| 亚洲色图在线看| 亚洲女子a中天字幕| 一区二区视频在线| 亚洲www啪成人一区二区麻豆| 亚洲一区二区三区美女| 日韩专区在线视频| 蜜桃视频在线观看一区| 狠狠色丁香九九婷婷综合五月| 久久精品久久精品| 国产不卡视频在线播放| 97久久精品人人澡人人爽| 色网站国产精品| 91麻豆精品国产91久久久久| 日韩视频免费直播| 国产视频一区在线观看| 国产精品福利一区| 亚洲一线二线三线久久久| 日韩精品乱码免费| 国产一区二区中文字幕| 99re这里只有精品首页| 欧美私人免费视频| 日韩三级视频在线看| 久久九九久久九九| 一区二区三区在线视频免费 | 欧美婷婷六月丁香综合色| 91精品国产丝袜白色高跟鞋| 精品国一区二区三区| 欧美国产综合色视频| 一区二区三区四区亚洲| 日本美女一区二区三区视频| 国产美女av一区二区三区| gogogo免费视频观看亚洲一| 欧美日韩午夜在线视频| 久久精品视频一区| 亚洲图片欧美综合| 国产一区二区在线观看免费| 99久久99久久综合| 欧美一级免费观看| 国产精品丝袜在线| 亚洲成人综合在线| 成人免费av在线| 51午夜精品国产| 日本一区二区三区四区在线视频| 一区二区不卡在线播放 | 蜜桃久久久久久久| 91在线视频18| 欧美v日韩v国产v| 亚洲日本在线a| 极品瑜伽女神91| 欧美日韩中文另类| 日本一区二区三区久久久久久久久不| 亚洲福利视频三区| 不卡的av网站| 久久综合久久综合亚洲| 亚洲午夜免费视频| 国产精品888| 日韩一卡二卡三卡四卡| 亚洲三级电影网站| 国产很黄免费观看久久| 欧美日韩一区二区三区不卡| 中文字幕第一区综合| 久久爱www久久做| 欧美午夜片在线看| 国产精品国产三级国产aⅴ无密码| 欧美aaa在线| 欧美在线免费视屏| 亚洲天堂久久久久久久| 国产精一区二区三区| 3751色影院一区二区三区| 亚洲天堂免费在线观看视频| 国产精品69毛片高清亚洲| 日韩欧美国产精品一区| 亚洲成人7777| 在线免费观看一区| 亚洲欧美电影一区二区| av在线这里只有精品| 国产日韩影视精品| 激情综合色播五月| 日韩写真欧美这视频| 性欧美大战久久久久久久久| 色一区在线观看| 综合久久久久久久| 91一区在线观看| 婷婷激情综合网| 欧美在线你懂的| 亚洲影院理伦片| 欧美在线观看一二区| 一区二区三区美女视频| 91免费看`日韩一区二区| 中文字幕中文字幕一区| 成人高清视频在线| 中文字幕在线不卡国产视频| 成人av免费观看| 亚洲色图视频免费播放| 91久久久免费一区二区| 亚洲综合久久久| 欧美福利视频导航| 免费在线看一区| 2021久久国产精品不只是精品| 久久99久久99小草精品免视看| 日韩免费性生活视频播放| 久久国产精品露脸对白| 精品欧美乱码久久久久久1区2区| 免费观看日韩电影| 欧美精品一区二区三区在线播放 | 亚洲综合在线电影| 欧美日韩中文一区| 蜜臂av日日欢夜夜爽一区| 久久综合久久综合久久| 国产成人亚洲综合a∨猫咪| 中文字幕中文乱码欧美一区二区| 97se亚洲国产综合自在线不卡 | 久久久久国产成人精品亚洲午夜| 国产黄人亚洲片| 亚洲卡通欧美制服中文| 欧美精品免费视频| 国产在线视频精品一区| 亚洲婷婷综合色高清在线| 欧美丝袜丝交足nylons图片| 日本女优在线视频一区二区| 久久久国产一区二区三区四区小说| 不卡电影免费在线播放一区| 亚洲图片欧美一区| 久久人人爽爽爽人久久久| 99久久精品国产精品久久| 婷婷久久综合九色综合绿巨人| 日韩免费观看高清完整版在线观看| 懂色av一区二区三区免费看| 一区二区视频在线| 精品福利视频一区二区三区| av中文字幕一区| 蜜臀久久99精品久久久画质超高清| 国产夜色精品一区二区av| 91精彩视频在线| 韩国av一区二区| 亚洲一区在线观看免费 | 亚洲成a天堂v人片| 久久精品亚洲乱码伦伦中文| 在线观看不卡视频| 精品一区二区日韩| 亚洲精品日韩综合观看成人91| 欧美一区二区黄色| 99久久免费国产| 韩国女主播一区二区三区| 亚洲欧美色综合| 久久九九99视频| 91精品国产高清一区二区三区 | 国产一区二区电影| 午夜日韩在线电影| 国产精品久久久久aaaa| 337p亚洲精品色噜噜| 色爱区综合激月婷婷| 国产成人精品免费在线| 日韩电影免费在线看| 亚洲欧美另类小说| 国产日产欧美精品一区二区三区|