国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在VB.NET中調試存儲過程

2024-07-10 13:02:40
字體:
來源:轉載
供稿:網友
  • 網站運營seo文章大全
  • 提供全面的站長運營經驗及seo技術!
  • 調試是編寫應用程序的一個主要部分。visual studio .net為自帶的調試器提供了大量的增強性能,包括統一的調試界面、web service調試以及跨語言調試。這種調試器的一個最有用的新功能體現在對存儲過程的調試性能上。本文我將介紹在vs.net中對sql server 2000存儲過程進行調試的幾種可選方法,以及你可能會遇到的一些配置問題。

    許多商家使用sql server作為數據庫,并將存儲過程作為將數據返回vb中的機制,因此對存儲過程進行逐步調試的能力成為開發的關鍵。visual basic 6中提供了transact-sql (t-sql)調試,它但需要許多步驟來完成對調試過程的配置。另外,這種調試器是一個單獨的程序,而且也不象vb調試器那么功能完備。vb.net提供了對存儲過程的調試,雖然用于遠程調試的設置還需要一些額外的工作,但這種調試器同你用在vb代碼中使用的一樣。除了vb.net和sql server 2000以外,你還可以使用其他版本的vb和sql server來調試存儲過程。然而在os、vb和sql server中可能會存在很多種配置,而且它們每一種都有其自身的配置問題,因此這里我將著重對sql server 2000和vb.net進行講解。

    所有必需的文件都要被放在合適的位置上以便對存儲過程進行調試(在表1中可以看到一列包含調試方法及其位置的文件)。如果你的機器中裝了sql server ,那么在這個機器中調試存儲過程就應該不會出現什么配置問題。你必須保證服務器和客戶端的配置都是正確的,以便對存儲過程進行遠程調試,而且你必須在服務器中安裝調試組件以保證遠程調試的正確運行。

    你可以使用三種方法來設置調試組件:可以在服務器中安裝vs.net;可以運行vs.net安裝程序并選擇remote components setup,它只用于安裝你需要進行調試的文件;或者你可以手動復制和記錄那些必需的文件。如果你不選擇在服務器中完全安裝一個vs.net,那么remote components setup會以一個鏈接的形式出現在安裝vs.net的第一個顯示畫面中(請查閱資源以了解更多遠程調試的設置問題)。

    安裝好遠程調試組件之后,vs.net會對mssdi98.dll文件進行升級,但不會將它復制到sql server /binn 目錄下,你需要手動進行復制。想要對t-sql進行調試的用戶還需要在服務器端的sp_sdidebug上設置execute權限。這是一個位于master 數據庫中的一個擴展存儲過程,在缺省狀態下只有系統管理員有execute權限來訪問這個存儲過程。如果適當地設置這些權限,用戶就能夠在該服務器的任何數據庫中對存儲過程進行調試了。如果調試器在無誤時中斷或者在逐步調試時出現問題,則需要檢查事務日志中的application errors。

    用sql explorer進行調試
    sql explorer是vs.net的一部分,它用于連接和運用數據庫。要直接從sql explorer中調試存儲過程,首先你要和數據庫建立數據連接。打開sql explorer并選中data connections來連接northwind數據庫。右擊并選中add connection,在data link屬性窗口中輸入sql server的服務器名以及注冊信息,并選中northwind作為缺省數據庫。

    建立好數據庫連接之后,你需要展開sql server并查找到sales by year存儲過程。展開該存儲過程后你會發現它使用了兩個參數:@beginning_date和@ending_date。參數下方的四項是由該存儲過程返回的列。

    右擊該存儲過程并選中step into stored procedure選項,此時會出現一個run stored procedure對話框,它會提示你輸入兩個日期,因為該過程是包含參數的 。這個畫面的好處在于它會告訴你每個參數的數據類型,以及它是輸入參數型還是輸出型參數。輸入1/1/96 和1/1/97兩個值。

    在存儲過程第一行的左頁邊上會出現一個黃色的箭頭,這就說明現在處于調試狀態。從這一點來看,調試存儲過程和調試vb代碼是一樣的。你可以使用標準的vb調試鍵來對代碼進行逐步調試或者繼續運行。和在vb代碼中一樣,你可以使用書簽以及設置斷點。

    locals窗口用于顯示任何本地變量的值(在這里指@beginning_date和@ending_date)。你還可以在command窗口中檢查變量的值。通過選中debug | windows找到vs.net中的調試窗口。如果一個存儲過程執行無誤的話output窗口中會出現這個消息:“the program 'sql debugger: t-sql' has exited with code 0 (0x0)。”通過在output窗口頂端的combo box中選中database output,你可以看到存儲過程中select語句的執行結果。

    一個觸發器(trigger)是在執行insert、update或delete語句時觸發的sql代碼,由于觸發器屬于t-sql代碼,因此你可以對它們進行調試,但你不能單獨調試它們,而必須對那些引發觸發器的存儲過程進行調試,然后再逐步調試觸發器。你可以在call stack窗口中找到觸發器和存儲過程。

    你還可以通過對調用它的存儲過程進行逐步調試來調試一個用戶定義的函數(udf)。只要存儲過程調用了該函數,調試器便會逐步對它進行調試。你會在call stack窗口中找到這個存儲過程以及udf。旁邊帶有黃色箭頭的存儲過程表示當前代碼處于調試狀態。比如,你可以建立這樣一個存儲過程,使用一個employeeid并返回職員姓名和一個以逗號分割開的職員分布區域的字符串(見列表a)。用select語句調用ufn_getemployeeregionstring來返回該區域。只要執行這個select語句,調試器便會開始調試udf代碼。你可以在call stack窗口中找到該存儲過程和函數。

    從你的代碼中調試sql
    想要調試從vb程序中調用的存儲過程,你可以在sql explorer中打開該存儲過程并在其中設置一個斷點。只要程序運行到設置斷點的地方,調試器便開始對它進行調試。這對一個使用了大量參數的存儲過程來說非常有用,因為這樣避免了手動輸入每個參數。

    通過使用調用usp_getemployee 存儲過程的debug范例程序來逐步進行調試。比如,你可以查看范例程序中display regions按鈕的代碼(見列表1以及下載范例程序)。當該命令的executereader方法被調用時,你便可以開始逐步調試被調用的存儲過程了。

    點擊solution explorer中的項目,開始對代碼進行調試。選中project | properties,展開configuration properties文件夾并點擊debugging。查看畫面底部的“sql server debugging”checkbox。

    進入sql explorer,查看northwind數據庫中的usp_getemployee,雙擊進入編輯模式。在set nocount on一行設置斷點。在調用executereader方法之后你還需要在vb代碼中的這一行設置一個斷點。它會顯示“do while dr.read。”在這里你需要設置斷點,因為調試器不會返回到調用該存儲過程的vb代碼中進行逐步調試;它會繼續執行。運行這個應用程序,輸入employeeid并點擊display regions按鈕。調試器會在存儲過程中的第一個斷點處停下來。

    雖然使用了相同的vs.net調試器,但是它在調試存儲過程時還是有一些限制。比如,你無法在sql語句當中終止執行。而且,它不能編輯和繼續執行。如果你使用了print語句,那么輸出結果將不會出現在任何調試器窗口中。另外,如果sql server已經對原先的值進行了緩存,那么在調試器中變量的改變則可能無法在t-sql代碼中反映出來。

    如你所看到的,vs.net不僅提供了t-sql調試功能,而且還提供了一個用于所有代碼的單一調試界面。遺憾的是,運行遠程調試需要進行大量的配置和測試工作。然而不管怎樣,對存儲過程進行調試的益處是完全值得你這么做的。
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 井研县| 深州市| 荥阳市| 阳信县| 淮滨县| 盐山县| 阿克| 六盘水市| 东辽县| 文水县| 玛沁县| 罗源县| 德化县| 四子王旗| 桐乡市| 桐城市| 新巴尔虎左旗| 南华县| 宜兰市| 锦屏县| 乐平市| 中卫市| 合川市| 调兵山市| 商洛市| 大埔县| 胶州市| 池州市| 澄迈县| 汉中市| 准格尔旗| 于都县| 霍州市| 泰安市| 遂川县| 通许县| 永顺县| 伊宁市| 唐海县| 蓬溪县| 镇安县|