更新:2007 年 11 月
本主题适用于:
| 版本 | Visual Basic | C# | C++ | Web Developer | 
|---|---|---|---|---|
| 速成版 | .gif) | .gif) | .gif) | .gif) | 
| 标准版 | .gif) | .gif) | .gif) | .gif) | 
| 专业团队版 | .gif) | .gif) | .gif) | .gif) | 
表格图例:
| .gif) | 适用 | 
| .gif) | 不适用 | 
| .gif) | 默认情况下隐藏的一条或多条命令。 | 
该示例演示如何调试 SQL CLR 用户定义的函数 (UDF)。它在 AdventureWorks 示例数据库中创建了一个新的 SQL CLR 用户定义的函数。
| .gif) 说明: | 
|---|
| 显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。 | 
调试 SQL CLR 用户定义的标量函数
- 在一个新的 SQL Server 项目中,建立一个到 AdventureWorks 示例数据库的连接。有关更多信息,请参见如何:连接到数据库。 
- 使用下面第一个示例部分中的代码创建一个新函数,并将其命名为 OrderCount.cs。有关更多信息,请参见 如何:使用 SQL Server 项目类型进行开发。 
- 添加一个对该功能进行测试的脚本,方法是,在 SELECT 语句中包括该脚本。在“解决方案资源管理器”中,右击“TestScripts”目录,单击“添加测试脚本”,然后插入下面的第二个示例部分中的代码。以 CallOrderCount.sql 名称保存文件。右击该文件名,然后选择“设置为默认调试脚本”。 
- 在 OrderCount.cs 中实例化 SqlCommand 的行上放置一个断点,然后在“调试”菜单上,单击“启动”以对该项目进行编译、部署和单元测试。以黄色箭头表示的指令指针出现在断点上时,说明正在调试函数。 
- 尝试不同的调试功能。 - 使用“调试”菜单中的“单步执行”,单步执行到实例化 SqlCommand 的语句之后。 
- 在“局部变量”窗口中,打开变量 sqlComm,该变量是一个 SqlCommand,然后检查它的成员。 
- 单击“调试”菜单中的“单步执行”,单步执行函数中的一行。注意,成员 sqlComm.CommandText 已实例化。 
- 在文本编辑器中,将 sqlComm 拖动到“监视”窗口中的任意位置。该变量随即添加到受监视的变量列表中。 
- 再次选择“单步执行”,注意此时将打开一个标记为“动态 T-SQL”的新窗口,其中显示了即将执行的 SQL 语句。 
- 选择“单步执行”以执行该语句并返回到函数。 
- 再次按“继续”,注意此时将打开第二个“动态 T-SQL”窗口,其中显示了返回函数值的代码。 
- 再次按“继续”完成函数调试。 
 
示例
这是创建函数所需的代码。
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 用户定义的函数