如何偵錯 Visual Studio.NET 中的預存程序

文章翻譯 文章翻譯
文章編號: 316549 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步告訴您兩種方式您可以偵錯 SQL Server 預存程序與必要的組態設定及每一種方法的步驟。

Visual Studio.NET 開發人員可以使用伺服器總管來偵錯任何的 Visual Studio 專案之外的 SQL Server 預存程序,或開發人員可以直接從 Visual Basic、 Visual C#],或 Visual J# 專案中的 Managed 程式碼逐步執行預存程序的程式碼。

選項 1: 偵錯預存程序以獨立模式

  1. 開啟 [伺服器總管]。

    注意: 您不需要加入資料連接],使用 SQL Server 伺服器,因為 SQL Server 伺服器會也列在 [伺服器] 節點下。您可以使用 [伺服器] 節點中遵循的步驟,不過,您可以使用到您的 SQL Server 伺服器的資料連接,相同的方式。
  2. 在 [伺服器總管] 中的 [伺服器] 節點下方展開 SQL Server 的電腦名稱、 展開 [SQL 伺服器] 節點、 展開 [SQL Server 執行個體、 展開 北風資料庫] 節點,然後再展開 [預存程序] 節點]。
  3. CustOrderHist 預存程序上按一下滑鼠右鍵,然後按一下 [逐步執行預存程序
  4. 執行預存程序] 對話方塊便會開啟,其中列出預存程序的參數。型別做為 @ 客戶編號值 ALFKI 輸入參數,然後按一下 [確定]
  5. 在 Visual Studio 設計環境中會開啟 [一個視窗,顯示預存程序的文字。醒目提示顯示預存程序的第一個可執行一行。按 F11 以逐步執行預存程序完成。
  6. 在 [輸出] 視窗中會顯示下列訊息,來表示執行成功:
    程式 'SQL 偵錯工具: T-SQL' 結束時仍有使用中的程式碼 0 (0x0)。

選項 2: 逐步執行預存程序從 Managed 程式碼

  1. 建立新的 Visual Basic Windows 應用程式專案。
  2. 從工具箱] 拖曳 [按鈕] 控制項加入 Form1。在 Form1 的程式碼視窗頂端新增下行程式碼:
    Imports System.Data.SqlClient
    					
  3. 將下列程式碼複製到 Button1_Click 事件程序:

    注意: 修改連接字串,視您的環境。
            Dim cn As SqlConnection
            Dim strCn As String
            Dim cmd As SqlCommand
            Dim prm As SqlParameter
            strCn = "Data Source=(local);Initial Catalog=Northwind;" & _
                "Integrated Security=SSPI"
            cn = New SqlConnection(strCn)
            cmd = New SqlCommand("CustOrderHist", cn)
            cmd.CommandType = CommandType.StoredProcedure
            prm = New SqlParameter("@CustomerID", SqlDbType.Char, 5)
            prm.Direction = ParameterDirection.Input
            cmd.Parameters.Add(prm)
            cmd.Parameters("@CustomerID").Value = "ALFKI"
            cn.Open()
            Dim dr As SqlDataReader = cmd.ExecuteReader
            While dr.Read
                Console.WriteLine("Product ordered: {0}", dr.GetSqlString(0))
            End While
            dr.Close()
            cn.Close()
    					
  4. 在 [方案總管] 中用滑鼠右鍵按一下專案 (不方案),然後開啟 [屬性] 頁面。按一下 [樹狀目錄中的 [組態屬性,然後按一下以選取 SQL Server 偵錯] 核取方塊,在啟用偵錯預存程序的 [偵錯] 頁面上。
  5. 在下列程式碼行上設定中斷點:
           Dim dr As SqlDataReader = cmd.ExecuteReader
    					
  6. 在 [伺服器總管] 中找出並開啟 CustOrderHist 預存程序,如述選項 1]。預存程序上按一下滑鼠右鍵,然後按一下 [編輯預存程序
  7. 在預存程序中設定中斷點,SELECT 陳述式是可執行的程式碼唯一的行上。
  8. 按 F5 來執行 Visual Basic 專案。
  9. Form1 的出現,請按一下 指令按鈕。程式碼會執行到中斷點您在之前呼叫預存程序時設定。
  10. 按 F11。在預存程序] 視窗從 ExecuteReader 方法執行步驟的程式碼。
  11. 再次按下 F11。一行預存程序 SELECT 陳述式中的程式碼執行。然後控制項傳回至您的 Visual Basic 專案並執行到完成的專案。
  12. 若要繼續逐步執行 Visual Basic 程式碼,預存程序中的步驟之後,您必須設定在 Visual Basic 程式碼中的第二個中斷點之後對預存程序呼叫比方說在範例程式碼,這一節中所示中,您可以在第二個上設定中斷點下面這一行:
            While dr.Read
    					

疑難排解

  • 若要從 Visual Studio 的程式碼逐步執行預存程序,您必須啟用 SQL 偵錯在 偵錯專案屬性
  • 若要逐步執行預存程序程式碼,您必須在預存程序本身中設定中斷點。否則,透過預存程序和預存程序視窗偵錯步驟不會開啟。
  • 若要繼續逐步執行 Visual Studio 程式碼偵錯預存程序中的步驟之後,您必須設定在某個點專案程式碼中的中斷點預存程序執行後否則,程式碼執行到完成偵錯預存程序中的步驟之後。
  • 安裝及設定問題請參閱 > 一節名為"設定偵 SQL 錯"在 Visual Studio.NET 說明文件。

偵錯預存程序限制

下列是當偵錯預存程序,且您不會發生當您偵錯 Visual Studio 程式碼時,可能會遇到的限制清單:
  • 您不能 「 中斷 」 執行。
  • 您不能 「 編輯 」 繼續。
  • 您無法變更陳述式執行的順序。
  • 雖然您可以變更變數值,您所做的變更可能無法生效因為變數值會快取。
  • 不會顯示從 SQL PRINT 陳述式的輸出。

?考

如更多有關偵錯在 Visual Basic 6.0 中,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
170496偵錯預存程序從 Visual Basic 的秘訣
如需詳細資訊請造訪下列的 Microsoft Web 網站 (或參閱 Visual Studio.NET 說明中的 [偵錯 SQL] 主題的文件):
偵錯 SQL
http://msdn2.microsoft.com/en-us/library/zefbf0t6(vs.71).aspx

屬性

文章編號: 316549 - 上次校閱: 2007年5月12日 - 版次: 5.6
這篇文章中的資訊適用於:
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 標準版
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
關鍵字:?
kbmt kbhowtomaster kbsqlclient kbsystemdata KB316549 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:316549
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com