演练:调试 SQL CLR 用户定义的标量函数

更新:2007 年 11 月

本主题适用于:

版本

Visual Basic

C#

C++

Web Developer

速成版

主题不适用 主题不适用 主题不适用 主题不适用

标准版

主题不适用 主题不适用 主题不适用 主题不适用

专业团队版

主题适用 主题适用 主题适用 主题适用

表格图例:

主题适用

适用

主题不适用

不适用

主题适用,但命令默认情况下隐藏

默认情况下隐藏的一条或多条命令。

该示例演示如何调试 SQL CLR 用户定义的函数 (UDF)。它在 AdventureWorks 示例数据库中创建了一个新的 SQL CLR 用户定义的函数。

说明:

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置

调试 SQL CLR 用户定义的标量函数

  1. 在一个新的 SQL Server 项目中,建立一个到 AdventureWorks 示例数据库的连接。有关更多信息,请参见如何:连接到数据库

  2. 使用下面第一个示例部分中的代码创建一个新函数,并将其命名为 OrderCount.cs。有关更多信息,请参见 如何:使用 SQL Server 项目类型进行开发

  3. 添加一个对该功能进行测试的脚本,方法是,在 SELECT 语句中包括该脚本。在“解决方案资源管理器”中,右击“TestScripts”目录,单击“添加测试脚本”,然后插入下面的第二个示例部分中的代码。以 CallOrderCount.sql 名称保存文件。右击该文件名,然后选择“设置为默认调试脚本”。

  4. 在 OrderCount.cs 中实例化 SqlCommand 的行上放置一个断点,然后在“调试”菜单上,单击“启动”以对该项目进行编译、部署和单元测试。以黄色箭头表示的指令指针出现在断点上时,说明正在调试函数。

  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()

请参见

任务

如何:创建和运行 CLR SQL Server 用户定义的函数

其他资源

SQL CLR 数据库调试