收藏本站 收藏本站
积木网首页 - 软件测试 - 常用手册 - 站长工具 - 技术社区
积木学院 > 数据库 > 其他数据库 > 正文

SQL Server 2005数据库开发概述(1)

来源:互联摘选 日期:2006-05-03 01:01

随着Microsoft SQL Server 2005 Beta 2的发布,数据库开发的方式正在改变中。作为一个数据库开发人员,现在你可以更好的把工作关注在功能、对本机格式的数据的访问(如XML)、以及利用强大的数据库服务器创建更复杂的系统上。数据库开发工作正前所未有的越来越集成,你所需要的所有工具都触手可及。

  .NET Framework集成

  随着Microsoft SQL Server 2005 Beta 2的发布,数据库编程人员现在可以充分利用Microsoft .NET Framework 类库和现代编程语言来开发数据库应用。 通过集成的CLR,你可以用.NET Framework language 里的Visual Basic .NET 和C#中面向对象的结构、结构化的错误处理、数组、命名空间和类来编写存储过程、函数和触发器。此外,.NET Framework所提供的几千个类和方法也扩展了服务器功能,使你能够更容易的在服务器端使用。许多之前我们用T-SQL难以实现的任务现在可以更容易的用托管代码实现。同时,系统还新增了两个数据库对象类型:聚合和用户自定义类型。你现在能够更好的利用已掌握的知识和技能编写in-process 代码。总之,SQL Server 2005 Beta 2 能够使你的数据库服务器更方便地在后台执行适当的计算和操作。     SQL Server 和 CLR 的集成主要提供了如下好处:   1.增强的编程模型:.NET Framework 兼容的编程语言在很多方面要比T-SQL更强大,它提供给SQL 开发人员之前没有的架构和功能。   2.增强的安全性: 在CLR环境下运行的托管代码被数据库引擎所控制,这使得.NET Framework 数据库对象能够比以前版本的SQL Server中的扩展存储过程运行的更安全,并具备更好的安全性。   3.用户自定义类型和聚合: 借助宿主CLR,这两个新的数据库对象扩展了SQL Server 的存储和查询能力。   4.通用开发环境: 数据库开发被集成到Microsoft Visual Studio 2005 开发环境中。 用来开发中间层和客户层.NET Framework组件和服务的工具同样可以被用来开发和调试数据库对象和脚本。   5.性能和可伸缩性: 因为托管代码被编译为本机代码得以优先执行,在某些场合性能可以得到显著的提升。   6.利用CLR集成,你可以用Visual Basic .NET 和 C#这样的语言写出具有更复杂逻辑的代码和更适用于计算型任务的代码。而且,Visual Basic .NET 和 C# 还提供了诸如封装、继承、多态这样的面向对象的功能。你现在可以更容易的把代码和类、命名空间组织在一起,这意味着你更容易组织和维护在工作中产生的大量代码。这种从逻辑上和物理上把代码组织到程序集和命名空间中的功能非常有用,它将使你能够更好的在一个大型数据库实现项目中发现和关联不同的代码块。     托管代码在处理运算和管理复杂执行逻辑上比T-SQL更有效,并且提供了对字符串处理、正则表达式之类功能的额外支持。此外,由于现在可以利用.NET Framework类库的功能,你可以更容易的从存储过程、触发器、用户定义函数中访问几千个内置的类和例程(routines)。通过托管存储过程、函数、触发器、聚合,可以更容易的实现字符串处理、数学函数、日期操作、系统自由访问、高级加密算法、文件访问、图像处理、XML数据操作等功能。  

托管代码的一个主要好处就是类型安全。在托管代码执行前,CLR将执行一些检查,通过一个被称之为“验证”的处理过程来保证所执行的代码是安全的。例如,会检查代码以确保不会读未写的内存地址。     在Transact-SQL 和 托管代码之间的选择     当编写存储过程、触发器、用户自定义函数时,你现在要决定是使用传统的Transact-SQL 还是.NET Framework兼容的编程语言,如Visual Basic .NET or C#来编写它们。这个问题的答案依赖于使用的场合,在某些情形下,你会使用Transact-SQL,而另外一些情形下,你将使用托管代码。     Transact-SQL 更适合代码主要是进行数据访问、没有逻辑或逻辑简单的场合。托管代码更适合密集计算和复杂逻辑的场合,或者是那些你想利用.NET Framework 类库的场合。     代码放置也很重要。你可以把Transact-SQL 和 托管代码都放在服务器上运行,代码和数据的紧密结合使你能够充分利用服务器的处理能力。而且因为它减少了数据层和中间层之间的流量,所以这非常有益。特别是对I/O密集的系统,可能会有显著的好处。CLR 函数也可以利用到SQL Server 查询处理器的并行和优化功能。另一方面,你可能不希望把密集计算的任务放在数据库服务器上,现在的大多数客户端计算机都很强大,你可能希望把尽可能多的代码放到客户端来利用其处理能力。这没有一成不变的答案。     Web Services     在SQL Server 2005中,你可以开发数据库层的XML Web services,把SQL  Server 作为一个HTTP listener。这对那些以Web services为中心的应用程序提供了新型的数据访问功能。在SQL Server 2005 Beta 2中,你可以使用HTTP直接访问SQL Server,无需使用IIS这样的中间层listener。SQL Server 开放了一个 Web service 接口, 可以执行SQL语句和调用函数和过程,查询结果可用XML格式返回,并且可以利用Visual Studio 的Web services 架构。     ADO.NET     很多新的功能出现在下一个版本的ADO.NET中。从查询改变通知到多活动结果集(MARS),ADO.NET使数据访问和操作更加可伸缩和灵活。     ADO.NET 通知支持   SQL Server 2005 Beta 2 引入了对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 站点应用程序中启用结果缓存非常有用。  

多活动结果集     多活动结果集 (MARS)允许每个连接有超过1个的挂起请求,特别是允许每个连接有超过1个的打开的默认结果集。默认结果集是一种前向的、只读的结果集,采用默认结果集,客户端驱动可以透明的接受数据块(表格数据流buffer大小的数据块)以满足应用程序的要求,而无需在服务器往返(就像使用服务器光标)。 应用程序不需要牺牲性能即可实现一种简单的一次一行的编程方法。     多活动结果集消除了这一当前的限制:一个打开的默认结果集将阻止发送新的请求给服务器,直到整个结果集关闭为止。     快照隔离支持     SQL Server 2005 Beta 2 引入了新的快照隔离级别。快照隔离是一种行级数据版本化机制,行数据版本被存储以供读取。这种新的隔离级别提供了以下优点:   1.对于只读应用程序提高了数据的可用性,在OLTP环境下,读操作不会被阻塞。   2.写事务的自动强制冲突检测。   3.简化Oracle到SQL Server的应用程序移植。     例如,当同时读写同样数据时,锁将造成程序堵塞。如果一个事务中改变了一行,另一个事务将不能读这行,直到前一事务的改写提交为止。有了快照隔离,读依然可以访问到改写前的值。     快照隔离级别在以下技术中被支持: ADO, OLE DB, SQLOLEDB, Shape Provider, SQLODBC, OLE DB Managed Provider, SQL Managed Provider。     SQL 管理对象     SQL管理对象 (SMO)模型是SQL Server 2005的管理对象模型。SMO 在SQL Server管理对象模型上有显著的设计和结构上的提升。它是一个简单易用的,有着丰富的基于.NET Framework托管代码的对象模型。SMO 是开发数据库管理应用程序的主要的工具。SQL Server 管理工具集的每一个功能都可以用SMO来实现。     新的SMO对象模型和Microsoft Windows Management Instrumentation (WMI) APIs 替代了SQL-DMO,SMO比SQL-DMO更易使用。你依然可以使用SQL Server 2005 Beta 2中的SQL-DMO,但SQL-DMO 并不包含SQL Server 2005的特有的管理特性。  

SMO 和 SQL-DMO     SMO 对象模型是SQL-DMO 的延续。SMO和SQL-DMO 在特性上是兼容的,包含很多相同的对象。Where possible, the original SQL-DMO design is followed, 但是SMO 有很多SQL-DMO 没有的附加特性。为了实现SQL Server 2005中更多的DDL和管理功能,SMO增加了150多个新类。     SMO的主要优点是性能和可伸缩性。SMO有缓存对象模型,它允许在对SQL Server应用改变之前改变对象的一些属性。因此,SMO会更少的和服务器往返通讯,而且使得对象更加灵活。SMO也有优化过的实例,这意味着你可以部分或全部的实例化一个对象,这样你就不用实例化对象的所有属性,从而可以快速的装载多个对象。     和SQL-DMO只有一个单一的应用程序根目录来保持对所有创建的服务器对象的引用不同的是,SMO允许为多个服务器建立多个根,而无需建立一个新的连接。SMO除了支持SQL-DMO类型的脚本外,还支持先进的多段脚本。你也可以把一个对象转入捕获模式来捕获所有施加在这个对象上的DDL,无需对服务器做实际的改变。     为了支持"WMI监控"和"通过SMO对象接口的服务端配置",SQL-DMO也有一个可控制的计算机对象,这个对象能够简化到WMI的接口。   XML 技术     XML已经成为一种存储和交换数据的通用格式,是那些带标记的、结构化或半结构化信息的常用选择,如:文本(带有标示文档结构和重点的标记),嵌套对象(结构化的),异类数据(半结构化的)。XML也是一种用来在网络上不同应用程序间散布数据的重要的、被广为接受的标准。     Microsoft SQL Server 2000 支持通过Microsoft SQLXML来使用XML, 它允许你把关系型数据转换为XML,把XML数据存在关系型表中。Microsoft SQL Server 2005 Beta 2通过把XML作为一类数据类型来实现这一功能,此外,它还提供了针对XML文档的新的查询语句和定位修改。     为了更好的满足用户使用XML数据的要求,Microsoft SQL Server 2005 Beta 2引入了一种新的XML数据类型。这种数据类型有多种方法—query(), exist(), value(), nodes()modify(),它们实现了XML查询 (XQuery)规范中最重要的子集部分。事实上,SQL Server 2005 Beta 2已经扩充了这一规范的XML数据修改部分。为了支持XML类型,增加了相应的关键字用于注册和管理XML schema。FOR XML 和OPENXML也有所改变,它们在SQL Server 2000中被引入用来在关系型数据和XML之间互相转换,在SQL Server 2005 Beta 2中对此有所增强以更好的支持XML数据类型。

推荐阅读

 

热点信息

 
强悍的草根IT技术社区,这里应该有您想要的!
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号