演练:调试 SQL CLR 用户定义的标量函数
更新:2007 年 11 月
本主题适用于:
版本 |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
速成版 |
||||
标准版 |
||||
专业团队版 |
表格图例:
适用 |
|
不适用 |
|
默认情况下隐藏的一条或多条命令。 |
该示例演示如何调试 SQL CLR 用户定义的函数 (UDF)。它在 AdventureWorks 示例数据库中创建了一个新的 SQL CLR 用户定义的函数。
说明: |
---|
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 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 用户定义的函数