扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:microsoft.com 来源:microsoft.com 2007年8月30日
关键字: CLR SQL Server SQL Server 各版本 数据库
其他元数据在 SqlFunction 属性的参数中定义。在前一示例中,列名和类型以及返回表的名称都是在此属性中定义的。
将此函数部署到某 SQL Server 实例后,就可以运行以下查询来查看应用程序日志中的最后 10 项。
|
结果如图 1 所示:
将表值函数用作数据处理扩展的替代方法
Reporting Services 数据处理扩展功能可用于通过实现一组 ADO.NET 接口来对数据源建模。这在概念上类似于如何才能将表值函数用于 Reporting Services。表值函数明显优于数据处理扩展。
优点:
首先,表值函数比数据处理扩展要容易实现的多。只需创建两种方法即可实现表值函数。而数据处理扩展则必须实现许多接口。同样,部署模型也更简单明了。Microsoft Visual Studio 2005 可自动将 .NET Framework 表值函数部署到 SQL Server,之后,该函数即立即变得可从 Reporting Services 中使用。为了部署某数据处理扩展,必须将程序集复制到客户端和报表服务器,并在这两处编辑 XML 配置文件。
表值函数的另一个重要优点在于它可以是与之连接的数据库中某一联接的组成部分。这意味着 SQL Server 中的关系数据在被放入报表之前,可以与该函数中定义的自定义数据混合在一起并筛选出来。这对于数据处理扩展则是不可能的,因为 Reporting Services 不支持数据源之间的联接查询。
缺点:
数据处理扩展较之表值函数要强大和灵活得多。表值函数只能对单个数据库表建模,而数据处理扩展可以对整个数据库的等效项建模。同样,数据处理扩展可以充当完全自定义的数据源,而且它可以有自己的查询语言和连接语法。对于不同类型的数据,使用 SQL 作为查询语言并非总是理想的选择。例如,Reporting Services 包括 XML 数据的数据处理扩展,它使用类似于 Xpath 的查询语言。当开发人员希望完全控制数据访问代码路径时,数据扩展很有用。
将表值函数与 SQL Server Reporting Services 一起使用
您必须先完成三件事,然后才能将表值函数用于 Reporting Services。首先,必须配置 SQL Server,使之允许 CLR 集成。其次,必须在 Visual Studio 中开发表值函数。最后,必须将该函数部署到某 SQL Server 实例中。
要让 SQL Server 允许 CLR 集成,必须使用 SQL Server 外围应用配置器工具或运行查询来设置一个标志。
配置 SQL Server,使之允许 CLR 集成:
1.单击“开始”按钮,依次指向“所有程序”、Microsoft SQL Server 2005 和“配置工具”,然后单击“外围应用配置器”。
2.在 SQL Server 2005 外围应用配置器工具中,单击“功能的外围应用配置器”。
3.选择您的服务器实例,展开“数据库引擎”选项,然后单击“CLR 集成”。
4.选择“启用 CLR 集成”。
此外,您可以在 SQL Server 中运行以下查询(此查询需要 ALTER SETTINGS 权限):
|
开发表值函数:
若要开发表值函数,请在 Visual Studio 中创建一个新的 SQL Server 项目。若要创建 SQL Server 项目,请打开“新建项目”对话框,展开 Visual C#,然后选择“数据库”。此时,系统会提示您输入数据库连接信息。有关详细信息,请参阅 SQL Server 2005 联机丛书中的如何:创建 SQL Server 项目。在您建立了数据库连接后,就可以编写表值函数了。在项目中创建一个空白 .cs 文件,文件名为 EventLog.cs,然后将示例函数从前一部分复制并粘贴到该文件中。
部署表值函数:
若要部署,您必须向 SQL Server 实例注册该函数和包含它的程序集。这一操作可通过 Transact-SQL 命令完成。以下脚本会注册 tvfEventLogs 程序集和 ReadEventLog 函数:
|
此外,您还可以在解决方案资源管理器中右键单击相应的项目,并选择“部署”选项,直接从 Visual Studio 中部署您的程序集。Visual Studio 会使用 SqlFunction 属性来自动确定函数签名和其他必需的元数据。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者