SQL Server 和 CLR 的集成主要提供了如下好处:
&3SmTg
% l 增强的编程模型:.NET Framework 兼容的编程语言在很多方面要比T-SQL更强大,它提供给SQL 开发人员之前没有的架构和功能。
qDgy7kkQ l 增强的安全性: 在CLR环境下运行的托管代码被数据库引擎所控制,这使得 .NET Framework 数据库对象能够比以前版本的SQL Server中的扩展存储过程运行的更安全和具备更好的安全性。
5Rp mR l 用户自定义类型和聚合: 借助宿主CLR,这两个新的数据库对象扩展了SQL Server 的存储和查询能力。
8:2Vib$ l 通用开发环境: 数据库开发被集成到Microsoft Visual Studio 2005 开发环境中。 你用来开发中间层和客户层.NET Framework组件和服务的工具同样可以被用来开发和调试数据库对象和脚本。
nELY( z l 性能和可伸缩性: 因为托管代码被编译为本机代码得以优先执行,在某些场合你可以得到显著的性
BU|)lU5)z 能提升。
PP]7_h^2 利用CLR集成,你可以用Visual Basic .NET 和 C#这样的语言写出具有更复杂逻辑的代码和更适用于计算型任务的代码。而且, Visual Basic .NET 和 C# 还提供了诸如封装、继承、多态这样的面向对象的功能。你现在可以更容易的把代码和类、名字空间组织在一起,这意味着你更容易组织和维护工作产生的大量代码。这种从逻辑上和物理上把代码组织到装配件和名字空间中的功能非常有用,它将使你能够更好的在一个大型数据库实现项目中发现和关联不同的代码块。
C3~O6<,Jh 托管代码在处理运算和管理复杂执行逻辑上比T-SQL更有效,并且提供了对字符串处理、正则表达式之类功能的额外支持。此外,由于现在可以利用.NET Framework类库的功能,你可以更容易的从存储过程、触发器、用户定义函数中访问几千个内置的类和例程(routines)。通过托管存储过程、函数、触发器、聚合,可以更容易的实现字符串处理、数学函数、日期操作、系统自由访问、高级加密算法、文件访问、图像处理、XML数据操作等功能。
&UO/p/a 托管代码的一个主要好处就是类型安全。在托管代码执行前,CLR将执行一些检查,通过一个被称之为“验证”的处理过程来保证所执行的代码是安全的。例如,会检查代码以确保不会读未写的内存地址。
93=?^ Transact-SQL 增强
V."cmtf Transact-SQL 一直以来就是SQL Server所有编程的基础。SQL Server 2005 提供了很多新的语言功能用以开发可伸缩的数据库应用程序。这些增强包括错误处理、新的递归查询功能、对新的SQL Server数据库引擎功能的支持等。SQL Server 2005中的 Transact-SQL 增强功能提高了您在编写查询时的表达能力,使您可以改善代码的性能,并且扩充了您的错误管理能力。Microsoft 在增强 Transact-SQL 方面不断付出的努力显示了对它在 SQL Server 中具有的重要作用、它的威力以及它的将来所怀有的坚定信念。 VxE;tJ>1 A@-U#UvN 改进的开发工具
?)Je%H 7>F [7_ 开发人员现在能够用一个开发工具开发Transact-SQL, XML, Multidimensional Expressions (MDX), and XML for Analysis (XML/A)应用。和Visual Studio 开放环境的集成也为关键业务应用和商业智能应用提供了更有效的开发和调试环境。
]W5p\(1g 商业智能开发工具集
A\v53AT 商业智能开发工具集是一个基于Visual Studio 的通用开发环境,可用于创建BI解决方案,包括:数据库引擎,分析服务,报表服务等。也可以利用BI开发工具集的图形化用户界面来设计数据管理程序的SQL Server Integration Services (SSIS) 包,在BI开发工具集中,可以通过从工具栏中拖放任务,设置属性,用先后次序连接任务等操作来设计、开发和调试SSIS 包。图 3 显示了这一接口。
dF5y'
R'
|io)?`pj Visual Studio 集成
-Rx;"J.H SQL Server 2005 和 Visual Studio 2005 在数据库和应用程序开发之间提供了前所未有的深度集成。开发人员现在可以在Visual Studio开发环境中直接创建CLR 存储过程,函数,用户定义类型,用户定义聚合等,他们还可以直接从Visual Studio中部署这些新的数据库类型,而无需用别的工具。Visual Studio 2005 支持所有新的SQL Server 数据类型,诸如本机XML等。你也能够把CLR数据库对象加入到和别的Visual Studio 项目一样的源码控制系统中,这样为你的开发过程提供了更好的集成和安全。
L uW""P/ 交叉层和交叉语言调试
Ucz=\dO1 SQL Server 2005 和 Visual Studio 2005 在应用程序调试领域提供了更为紧密的集成。现在你可以使用同样的Visual Studio调试接口无缝的调试CLR和T-SQL代码,而无需关心代码的位置是存在开发人员的机器上还是SQL Server 数据库上。
}PM7CZSq 可扩展性
RL
H!f1cta W$W w/mcl+ 用户定义类型和聚合
Fl*<N SQL Server 2005中的用户定义类型并非对象的关系型扩展机制。它们是一种扩展数据库标量类型系统的方法。标量类型系统包括列类型是SQL Server自带的(像
int, nvarchar, uniqueidentifier等)。使用用户定义类型,你可以定义可用在列定义上的自己的类型,如,
Create a user-defined type if your type really is an atomic value that is appropriate to be modeled as a column. 7 0EH~ wOLV?Vk 如果你需要定义自己的标量类型,你可用使用用户定义类型。这些类型的例子包括在不同日历中定制的日期/时间数据类型,货币类型。使用用户定义类型,你可以创建一个单一的对象,把该类型的所有可用的行为开放出来,并且封装或隐藏存在类型中的基础数据,需要访问数据的每个人必须使用用户定义类型编程接口。如果你能利用.NET Framework 中的函数(如国际化或日历函数),这倒是另一个使用用户定义类型的好理由。
S,Q(,e^& 这还有很多关于聚合的例子,包括执行统计计算,如平均,方差等。如果需要的聚合函数不能直接由内建的聚合函数而得,在SQL Server 2005中,有三种方法来执行定制的聚合:
`fl$ o6S/ · 编写用户定义聚合
3Bcv"O,B!{ · 用CLR存储过程来写聚合
=J]M#6N0 · 使用服务器端游标 9W-1P}e, 8"p rWAN SQL 管理对象(SMO)
|:,`dQfw SQL管理对象 (SMO)模型是SQL Server 2005的管理对象模型。SMO 在SQL Server管理对象模型上有显著的设计和结构上的提升。它是一个简单易用的,有着丰富的基于.NET Framework托管代码的对象模型。SMO 是开发数据库管理应用程序的主要的工具。SQL Server 管理工具集的每一个功能都可以用SMO来实现。
gSf> +| 新的SMO对象模型和Microsoft Windows Management Instrumentation (WMI) APIs 替代了SQL-DMO,SMO比SQL-DMO更易使用。你依然可以使用SQL Server 2005 Beta 2中的SQL-DMO,但SQL-DMO 并不包含SQL Server 2005的特有的管理特性。
^z~drcR 分析管理对象
1 |/ |Lq%w 分析管理对象 (AMO) 允许客户端应用程序使用一个对象库来访问分析服务的管理命令和管理功能。该对象库提供了对象级的校验功能,而不是手工的生成分析服务命令的DDL脚本。应用程序通过AMO能够连接到分析服务实例,且能直接操作其上的对象,或者在没有连接的情况下创建对象,保持元数据供以后的部署。
h")7kjM 改进的数据访问和Web Services
\7%wJIeyx h iK}& 在SQL Server 2005中,你可以开发数据库层的XML Web services,把SQL Server 作为一个HTTP listener。这对那些以Web services为中心的应用程序提供了新型的数据访问功能。在SQL Server 2005中,你可以使用HTTP直接访问SQL Server,无需使用IIS这样的中间层listener。SQL Server 开放了一个 Web service 接口, 可以执行SQL语句和调用函数和过程,查询结果可用XML格式返回,并且可以利用Visual Studio 的Web services 架构。
P@%L.y
B jy_4W!4a L[<CEk ADO.NET 2.0/ADOMD.NET ^ >
?C 很多新的功能出现在下一个版本的ADO.NET中。从查询改变通知到多活动结果集(MARS),ADO.NET使数据访问和操作更加可伸缩和灵活。
^/#8 " 查询通知
h"'}Z^ )1$H7| SQL Server 2005引入了对SQL Server 查询的通知支持。你可以使用这一功能来发送一个命令到SQL Server,并且要求当其后运行的同样命令产生不同的结果时,SQL Server生成一个通知。这一功能是通过从属对象检测到基础数据的改变来实现的。可用通过多种客户端API将命令发送到服务器,如:ADO.NET, OLE DB, Open Database Connectivity (ODBC), Microsoft ActiveX Data Objects (ADO), 或 SOAP等,这些命令可能包含一个通知请求的tag。对于被作为请求一部分的被执行的每一条语句,服务器都会为请求中的每一条语句创建一个“通知订阅”。通知通过一个SQL Service Broker 队列传递,应用程序可以轮询,并且无论通知是否可用,都可以使用活动服务,或者阻碍语句的返回。 查询通知对于在那些数据库驱动Web 站点应用程序中启用结果缓存非常有用。图 4 显示了查询通知处理过程。
wWSE[S$V
G[u{! 2RS MARS FYb]9MX 多活动结果集 (MARS)允许每个连接有超过1个的挂起请求,特别是允许每个连接有超过1个的打开的默认结果集。默认结果集是一种前向的、只读的结果集,采用默认结果集,客户端驱动可以透明的接受数据块(表格数据流buffer大小的数据块)以满足应用程序的要求,而无需在服务器往返(就像使用服务器游标)。 应用程序可用使用一种简单的一次一行的编程方法而不会有性能上的损失。多活动结果集消除了这一当前的限制:一个打开的默认结果集将阻止发送新的请求给服务器,直到整个结果集关闭为止。
4,?beA 数据镜像中的透明的故障转移
'I:_}q Bwu?DK SQL Server 2005 可通过数据库镜像来支持热备功能。如果一个SQL Server 实例失效,工作可以被自动的转移到备份服务器上。这要求一个实例见证故障转移,该实例被称为见证实例。热备例子要求已存在的客户端连接必须知道故障转移(和新的服务器实例建立连接),如果客户端在下一次访问中发生错误,必须手工编程来故障转移,这并非好的方案,ADO.NET 2.0中的SqlClient 无需特别的编程便可支持客户端的故障转移。
mx#)iHY XML Support
sCp)o,; hegH^IN M 像本机XML数据类型和XQuery之类的先进功能使组织能够无缝的连接内部和外部的系统。
SQL Server 2005 将完全支持关系型和
XML 数据,这样企业可以以最适合的格式来存储,管理和分析数据。对于那些已存在的和开放的标准如:
Hypertext Transfer Protocol (HTTP), XML, Simple Object Access Protocol (SOAP), XQuery, 和
XML Schema definition language (XSD) 的支持也将更方便的让整个企业系统互通。
,?`kYPZ ly6dl [Dmf.PUe XML 数据类型
fwh/#V-i XML能够比SQL Server所支持的那些标量数据类型更好的对复杂数据进行建模。基于字符串的内置数据类型
char 或者是
varchar并不能够充分有效的利用XML数据的大量优点。举例来说,如果XML被存储为一个字符串,那么你可以插入或检索整个XML文档,甚至能够从中检索连续的字符,但你不能定位查询文档中内容。通过XML数据类型,SQL Server 2005使我们能够查询XML文档中的一部分,校验文档是否满足XML schema,甚至能够定位修改文档中的内容。 它也将传统的关系型数据和非结构化和半结构化的数据集成在一起,而这在SQL Server 2000中是不可能的。在SQL Server 2005中, XML数据被作为二进制大对象 (BLOBs)内部存放,使得重解析和压缩更有效。
m\E=I5*/ `cIeqp E,cQ9}/ 一个XML schema集可以和类型化XML的一列相关联,这样便能够对已存储的XML数据的约束、插入、改写、值的类型进行校验,也能够优化存储和查询性能。SQL Server 2005 也提供了一些DDL 语句用于管理服务器上的schema。
yU"#2 *C XQuery
P%
8U XML 查询语言,或者XQuery是一种专为查询各种类型XML数据的智能和高效的语言。使用XQuery,你可以对XML数据类型列和变量进行查询。. 和许多XML 标准一样, World Wide Web Consortium (W3C) 组织监视着XQuery的开发。 XQuery由 Quilt 这种查询语言发展而来,它基于多种查询语言,如, XML Path Language (XPath) 1.0, XQL, 和 SQL, 它也把XPath 2.0 包含为一个子集。因此,如果你有使用XPath 1.0的经历,你可以不用从头学起。然而,它比XPath1.0有些显著的增强,如:类型化,特别的函数,支持更好的反复,结果集排序,结构等。
3,#v0 # Ndyo)11z E`{DX9^ SQL Server 2005 Beta 2 提供了更多的XQuery 功能,它允许在数据层操作XML对象。它支持XQuery 1.0 工作草案(2003年11页15日制定)的一个静态类型子集。
Mm1>g~o Web Services 支持
s6#e?5J 在SQL Server 2005中,你可以开发数据库层的XML Web services,把SQL Server 作为一个HTTP listener。这对那些以Web services为中心的应用程序提供了新型的数据访问功能。在SQL Server 2005中,你可以使用HTTP直接访问SQL Server,无需使用IIS这样的中间层listener。SQL Server 开放了一个 Web service 接口, 可以执行SQL语句和调用函数和过程,查询结果可用XML格式返回,并且可以利用Visual Studio 的Web services 架构。
px(~ZZB" Lr(JnS ="PFCxi XML for Analysis Services (XML/A)
XqwP<5Z 用于分析的XML(XML/A)是一个本机的、基于标准的协议,被用于和Analysis Services服务器通信。通过它,可以非常容易的开发出新型的应用程序——集成分析和实时操作,可以从任何平台,任何语言来访问数据。采用XML/A本机协议,分析服务客户端无需任何配置,每一个服务器自动的成为一个Web Services。一个轻量的Win32层可用于向后兼容,如Analysis Services 2000 的 OLE DB for OLAP,ADOMD和ADOMD.NET。大多数用户也还能使用ADOMD.NET对象模型创建分析服务上的定制应用。
UUa@7|x Application 架构
K$B~vy6E` 66$hdT$ SQL Server 2005 带来了新的SQL Server 应用程序架构,包括:
Service Broker, Notification Services, SQL Server Mobile, SQL Server Express。
Service Broker 是一个分布式应用程序框架,它在数据库到数据库级上提供了可靠的异步通讯。
DZA '0- 'pO-h,{TS &JD^\+7U: Service Broker
Qz_4Ms<o 在过去10年来,电子商务应用的发展提出了在数据库应用程序间管理工作流的需求。当一个在线客户发出一个购书订单,这个订单需要提交在库存、送货、信用卡系统中提交事务,也需要使用另一个Web应用程序发出订单确认信息。等待这些应用依次完成并不是好的方法,SQL Server 2005 提供了一个新的可伸缩的架构用来构建异步信息处理。
s
OLjT34 UIU6rilB 8@|{n`n] Service Broker 技术通过使用T-SQL DML语言扩展允许内部或外部应用程序发送和接收可靠、异步的信息流。信息可以被发送到发送者所在数据库的队列中,获发送到同一SQL Server实例的另一个数据库,或发送到同一服务器或不同服务器的另一个实例。
\< a^5' 图
5是
Service Broker 结构的大纲视图
T)Q_dF.N
"L8Hgwg 通知服务
Ekh)l0
l Microsoft SQL Server 通知服务是一个用来开发和部署消息通知应用程序的平台。通知是个性化、时效性的信息,可以被发送给多种不同的设备。
G({VK N P5K1: .q!i
+0 通知反映了订阅者的喜好,订阅者可以进入他感兴趣的订阅。如,“当Adventure Works股票价格达到$70.00时通知我”,或“当我这个团队的策略文档被更新时通知我”。
H+@?K6{h ~:|V,1 /b/ 6*& 一旦触发事件发生,通知便被生成并发送给用户,通知也可根据用户预定义的调度来生成和发送。用户的订阅规定了何时通知被生成和发送。
%?F$3YN, 通知可以被分送给不同的设备,如,一个通知可以被发送给用户的移动电话,个人数字助手(PDA),Microsoft Windows Messenger, 或 e-mail 账户。因为用户常使用这些设备,所以通知是理想的发送高优先级信息的手段。
^+gD;a|t SQL Server Mobile Edition
: #so"O 在SQL Server 2000 中出现的 SQL Server 2000 Windows CE 版现已是SQL Server Mobile 3.0版。在其中有很多和开发人员有关的新的关键特性:
(]10Z8"fJ l 你现在可以直接用SQL Server Management Studio 在桌面或设备上创建一个SQL Server Mobile 版数据库。你也可以直接从SQL Server Management Studio中操作这个数据库的模式,而无需考虑这个数据库是在桌面还是在移动设备上。你可以使用SQL Server Management Studio来对设备或桌面上的SQL Server Mobile 版数据库允许查询。你可以充分利用新的SQL Server Mobile 版的特性:一个GUI界面的XML showplan,就像本机SQL Server一样,可以使用查询暗示来覆盖SQL Server Mobile的查询优化器。你第一次可以在设备上控制优化计划。
6E(..fo:" l 你现在可以对DTS对象编码来交换数据。
Rm6i[y& l 在SQL Server 2005中从
SQLResult 集派生出新的
SqlCeResult 集。这将使得SQL Server Mobile版有个真正可滚动的、可更新的光标。它也允许绑定到设备上的数据对象。
4vkqe6 l 你可以在主应用程序打开的同时编写一个应用程序来同步数据,你现在可以在同一时刻用两个不同的应用程序来访问设备上的同一个数据库。
H6Gs&y