欢迎来到天天文库
浏览记录
ID:19716598
大小:78.00 KB
页数:8页
时间:2018-10-05
《讲述如何使用sqlclr表值函数进行扩展》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、讲述如何使用SQLCLR表值函数进行扩展>>教育资源库 MicrosoftSQLServer2005的一项新增功能是其与Microsoft.Frameeedash;传递报表来响应事件 •呈现扩展除ReportingServices支持的之外,还能以其他格式显示报表 •安全扩展提供您自己的身份验证和授权机制用于查看和管理报表 •数据处理扩展通过开发能够处理来自ReportingServices不支持的数据源的数据 •自定义报表项是自定义的服务器控件,可嵌入报表中,以提供除内
2、置控件以外的其他功能 本白皮书阐述如何实现表值函数来处理数据,使之成为使用数据处理扩展的替代方法。有关扩展ReportingServices的详细信息,请参阅SQLServer2005联机丛书中的ReportingServices扩展。 使用表值函数 表值函数用于通过编程方式在运行时创建表。它们创建的表可象任何其他数据库表一样用于Transact-SQL查询语句。在SQLServer2000中引入表值函数时,只能使用Transact-SQL创建它们。以下是在Transact-SQL中实现的表值函数的示例。CREAT
3、EfunctionEmployeeNames()returnsemployeeNamestable(idint,namenvarchar(20),)asbeginINSERTemployeeNamesvalues(1,'Ryan');INSERTemployeeNamesvalues(2,'John');INSERTemployeeNamesvalues(3,'Bob');returnend 然后,就可以从select语句中引用该函数,就象它是表一样:SELECTname
4、fromEmployeeNames()e--------------------Ryan 尽管这很有用,但还是受到Transact-SQL语言的限制,因为该语言主要应用于关系数据。如果您尝试离开其适用范围,那么Transact-SQL会变得多少有点不太灵活。在SQLServer2005中,您现在可以使用自己喜欢的.Frame;usingSystem.Data.Sql;usingMicrosoft.SqlServer.Server;usingSystem.Collections;usingSystem.Data.SqlT
5、ypes;usingSystem.Diagnostics;publicclassTabularEventLog{ [SqlFunction(TableDefinition=logTimedatetime,Message+ nvarchar(4000),Categorynvarchar(4000),InstanceIdbigint, Name=ReadEventLog,FillRoe=FillRoerableInitMethod(Stringlogname) { returnnee,Environme
6、nt.MachineName).Entries; } publicstaticvoidFillRoetimeessage,outSqlCharscategory, outlonginstanceId) { EventLogEntryeventLogEntry=(EventLogEntry)obj; timeeessage=neessage); category=newSqlChars(eventLogEntry.Category); instanceId=eventLogEntry.I
7、nstanceId; }} 该表值函数1234567下一页>>>>这篇文章来自..,。是作为TabularEventLog类的两个静态方法实现的。第一个方法(InitMethod)赋予SqlFunction属性,用于将它指定为该表值函数的入口点。此方法必须返回IEnumerable或IEnumerator对象。该对象包含将用于填充返回表的数据。执行该函数时,SQLServer将循环访问IEnumerator对象中的每个对象,并使用它来填充数据行。为此,它要将该对象传递到该类中的第二个方法FillRoe参数中指定。
8、其他元数据在SqlFunction属性的参数中定义。在前一示例中,列名和类型以及返回表的名称都是在此属性中定义的。 将此函数部署到某SQLServer实例后,就可以运行以下查询来查看应用程序日志中的最后10项。SELECTTOP10T.logTime,T.Message,T.InstanceIdFROMdbo.Re
此文档下载收益归作者所有