共用方式為


逐步解說:偵錯 SQL CLR 使用者定義的純量函式

更新:2007 年 11 月

這個主題適用於:

版本

Visual Basic

C#

C++

Web Developer

Express 版

標題不適用於 標題不適用於 標題不適用於 標題不適用於

Standard 版

標題不適用於 標題不適用於 標題不適用於 標題不適用於

Pro/Team 版

標題適用於 標題適用於 標題適用於 標題適用於

表格圖例:

標題適用於

套用

標題不適用於

不套用

預設會套用主題但隱藏命令

預設隱藏的命令。

這個範例將示範如何偵錯 SQL CLR 使用者定義函式 (UDF)。它會在 AdventureWorks 範例資料庫中建立新的 SQL CLR 使用者定義函式。

注意事項:

您所看見的對話方塊與功能表命令可能會與 [說明] 中所描述的有所不同,視您所使用的設定或版本而定。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定

若要偵錯 SQL CLR 使用者定義的純量函式:

  1. 在新的 SQL Server 專案中,建立與 [AdventureWorks] 範例資料庫的連接。如需詳細資訊,請參閱 HOW TO:連接資料庫

  2. 使用下列第一個範例區段中的程式碼建立新函式,並將其命名為 OrderCount.cs。如需詳細資訊,請參閱 HOW TO:使用 SQL Server 專案類型開發

  3. 藉由將指令碼包含在 SELECT 陳述式中,加入能夠測試函式的指令碼。在 [方案總管] 中,以滑鼠右鍵按一下 [TestScripts] 目錄,再按 [加入測試指令碼],然後插入底下第二個範例區段中的程式碼。使用名稱 CallOrderCount.sql 來儲存檔案。在檔名上按一下滑鼠右鍵,並選擇 [設定為預設偵錯指令碼]。

  4. 在會將 SqlCommand 執行個體化之那一行的 OrderCount.cs中置放中斷點,然後在 [偵錯] 功能表上,按一下 [啟動],對專案進行編譯、部署和單元測試。當中斷點上出現以黃色箭頭表示的指令指標時,即表示您正在偵錯函式。

  5. 嘗試不同的偵錯功能。

    1. 使用 [偵錯] 功能表的 [逐步執行],逐步執行將 SqlCommand 執行個體化的陳述式。

    2. 在 [區域變數] 視窗中,開啟變數 sqlComm (其為 SqlCommand),然後檢視該成員。

    3. 在 [偵錯] 功能表上按一下 [逐步執行],逐步執行函式中的某一行。請注意,sqlComm.CommandText 成員已執行個體化。

    4. 在 [文字編輯器] 中,將 sqlComm 拖曳至 [監看式] 視窗中的任何位置。該變數現在將加入被監看變數的清單內。

    5. 再按 [逐步執行],然後注意標記為 [動態 T-SQL] 的新視窗會開啟,顯示將要執行的 SQL 陳述式。

    6. 選擇 [逐步執行] 執行該陳述式,然後返回函式。

    7. 再按一次 [繼續],然後注意開啟的第二個 [動態 T-SQL] 視窗,它會顯示傳回函式值的程式碼。

    8. 再次按 [繼續],以完成此函式的偵錯動作。

範例

此為建立函式所需的程式碼。

using System;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
 
 
public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
    public static int OrderCount()
    {
        using (SqlConnection conn = new SqlConnection("context connection=true"))
            {
                  conn.Open();
                  SqlCommand cmd = new SqlCommand();
                  cmd.Connection = conn;
                  cmd.CommandText = "SELECT 42";
                  
                  //cmd = new SqlCommand("SELECT 42",conn);
 
                  int result = (int)cmd.ExecuteScalar();
                  return result;
            }
    }
};

此為呼叫函式的測試指令碼。

SELECT dbo.OrderCount()

請參閱

工作

HOW TO:建立及執行 CLR SQL Server 使用者定義函式

其他資源

SQL CLR 資料庫偵錯