WEB开发网
开发学院数据库MSSQL Server SQLServer2005数据库开发概述 阅读

SQLServer2005数据库开发概述

 2007-11-11 08:57:14 来源:WEB开发网   
核心提示:随着Microsoft sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2的发布,数据库开发的方式正在改变中,SQLServer2005数据库开发概述,作为一个数据库开发人员,现在你可以更好的把工作关注在功能、对本机格式的数据的访问(如xml(标准化越来越近了))、以及利用强大的数据库

  随着Microsoft sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2的发布,数据库开发的方式正在改变中。作为一个数据库开发人员,现在你可以更好的把工作关注在功能、对本机格式的数据的访问(如xml(标准化越来越近了))、以及利用强大的数据库服务器创建更复杂的系统上。数据库开发工作正前所未有的越来越集成,你所需要的所有工具都触手可及。
  
  .NET Framework集成
  
  随着Microsoft sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2的发布,数据库编程人员现在可以充分利用Microsoft .NET Framework 类库和现代编程语言来开发数据库应用。 通过集成的CLR,你可以用.NET Framework language 里的Visual Basic .NET 和C#中面向对象的结构、结构化的错误处理、数组、命名空间和类来编写存储过程、函数和触发器。此外,.NET Framework所提供的几千个类和方法也扩展了服务器功能,使你能够更容易的在服务器端使用。许多之前我们用T-SQL难以实现的任务现在可以更容易的用托管代码实现。同时,系统还新增了两个数据库对象类型:聚合和用户自定义类型。你现在能够更好的利用已掌握的知识和技能编写in-process 代码。总之,sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 能够使你的数据库服务器更方便地在后台执行适当的计算和操作。
  
  sql server(WINDOWS平台上强大的数据库平台) 和 CLR 的集成主要提供了如下好处:
  
  1.增强的编程模型:.NET Framework 兼容的编程语言在很多方面要比T-SQL更强大,它提供给SQL 开发人员之前没有的架构和功能。
  2.增强的安全性: 在CLR环境下运行的托管代码被数据库引擎所控制,这使得.NET Framework 数据库对象能够比以前版本的sql server(WINDOWS平台上强大的数据库平台)中的扩展存储过程运行的更安全,并具备更好的安全性。
  3.用户自定义类型和聚合: 借助宿主CLR,这两个新的数据库对象扩展了sql server(WINDOWS平台上强大的数据库平台) 的存储和查询能力。
  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(WINDOWS平台上强大的数据库平台) 查询处理器的并行和优化功能。另一方面,你可能不希望把密集计算的任务放在数据库服务器上,现在的大多数客户端计算机都很强大,你可能希望把尽可能多的代码放到客户端来利用其处理能力。这没有一成不变的答案。
  
  Web Services
  
  在sql server(WINDOWS平台上强大的数据库平台) 2005中,你可以开发数据库层的xml(标准化越来越近了) Web services,把sql server(WINDOWS平台上强大的数据库平台) 作为一个HTTP listener。这对那些以Web services为中心的应用程序提供了新型的数据访问功能。在sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2中,你可以使用HTTP直接访问sql server(WINDOWS平台上强大的数据库平台),无需使用IIS这样的中间层listener。sql server(WINDOWS平台上强大的数据库平台) 开放了一个 Web service 接口, 可以执行SQL语句和调用函数和过程,查询结果可用xml(标准化越来越近了)格式返回,并且可以利用Visual Studio 的Web services 架构。
  
  ADO.NET
  
  很多新的功能出现在下一个版本的ADO.NET中。从查询改变通知到多活动结果集(MARS),ADO.NET使数据访问和操作更加可伸缩和灵活。
  
  ADO.NET 通知支持
  
  sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 引入了对sql server(WINDOWS平台上强大的数据库平台) 查询的通知支持。你可以使用这一功能来发送一个命令到sql server(WINDOWS平台上强大的数据库平台),并且要求当其后运行的同样命令产生不同的结果时,sql server(WINDOWS平台上强大的数据库平台)生成一个通知。这一功能是通过从属对象检测到基础数据的改变来实现的。可用通过多种客户端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(WINDOWS平台上强大的数据库平台) 2005 Beta 2 引入了新的快照隔离级别。快照隔离是一种行级数据版本化机制,行数据版本被存储以供读取。这种新的隔离级别提供了以下优点:
  1.对于只读应用程序提高了数据的可用性,在OLTP环境下,读操作不会被阻塞。
  2.写事务的自动强制冲突检测。
  3.简化Oracle(大型网站数据库平台)到sql server(WINDOWS平台上强大的数据库平台)的应用程序移植。
  
  例如,当同时读写同样数据时,锁将造成程序堵塞。如果一个事务中改变了一行,另一个事务将不能读这行,直到前一事务的改写提交为止。有了快照隔离,读依然可以访问到改写前的值。
  
  快照隔离级别在以下技术中被支持: ADO, OLE DB, SQLOLEDB, Shape Provider, SQLODBC, OLE DB Managed Provider, SQL Managed Provider。
  
  SQL 管理对象
  
  SQL管理对象 (SMO)模型是sql server(WINDOWS平台上强大的数据库平台) 2005的管理对象模型。SMO 在sql server(WINDOWS平台上强大的数据库平台)管理对象模型上有显著的设计和结构上的提升。它是一个简单易用的,有着丰富的基于.NET Framework托管代码的对象模型。SMO 是开发数据库管理应用程序的主要的工具。sql server(WINDOWS平台上强大的数据库平台) 管理工具集的每一个功能都可以用SMO来实现。
  
  新的SMO对象模型和Microsoft Windows Management Instrumentation (WMI) APIs 替代了SQL-DMO,SMO比SQL-DMO更易使用。你依然可以使用sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2中的SQL-DMO,但SQL-DMO 并不包含sql server(WINDOWS平台上强大的数据库平台) 2005的特有的管理特性。
  
  SMO 和 SQL-DMO
  
  SMO 对象模型是SQL-DMO 的延续。SMO和SQL-DMO 在特性上是兼容的,包含很多相同的对象。Where possible, the original SQL-DMO design is followed, 但是SMO 有很多SQL-DMO 没有的附加特性。为了实现sql server(WINDOWS平台上强大的数据库平台) 2005中更多的DDL和管理功能,SMO增加了150多个新类。
  
  SMO的主要优点是性能和可伸缩性。SMO有缓存对象模型,它允许在对sql server(WINDOWS平台上强大的数据库平台)应用改变之前改变对象的一些属性。因此,SMO会更少的和服务器往返通讯,而且使得对象更加灵活。SMO也有优化过的实例,这意味着你可以部分或全部的实例化一个对象,这样你就不用实例化对象的所有属性,从而可以快速的装载多个对象。
  
  和SQL-DMO只有一个单一的应用程序根目录来保持对所有创建的服务器对象的引用不同的是,SMO允许为多个服务器建立多个根,而无需建立一个新的连接。SMO除了支持SQL-DMO类型的脚本外,还支持先进的多段脚本。你也可以把一个对象转入捕获模式来捕获所有施加在这个对象上的DDL,无需对服务器做实际的改变。
  
  为了支持"WMI监控"和"通过SMO对象接口的服务端配置",SQL-DMO也有一个可控制的计算机对象,这个对象能够简化到WMI的接口。
  
  xml(标准化越来越近了) 技术
  
  xml(标准化越来越近了)已经成为一种存储和交换数据的通用格式,是那些带标记的、结构化或半结构化信息的常用选择,如:文本(带有标示文档结构和重点的标记),嵌套对象(结构化的),异类数据(半结构化的)。xml(标准化越来越近了)也是一种用来在网络上不同应用程序间散布数据的重要的、被广为接受的标准。
  
  Microsoft sql server(WINDOWS平台上强大的数据库平台) 2000 支持通过Microsoft SQLxml(标准化越来越近了)来使用xml(标准化越来越近了), 它允许你把关系型数据转换为xml(标准化越来越近了),把xml(标准化越来越近了)数据存在关系型表中。Microsoft sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2通过把xml(标准化越来越近了)作为一类数据类型来实现这一功能,此外,它还提供了针对xml(标准化越来越近了)文档的新的查询语句和定位修改。
  
  为了更好的满足用户使用xml(标准化越来越近了)数据的要求,Microsoft sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2引入了一种新的xml(标准化越来越近了)数据类型。这种数据类型有多种方法―query(), exist(), value(), nodes()和 modify(),它们实现了xml(标准化越来越近了)查询 (XQuery)规范中最重要的子集部分。事实上,sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2已经扩充了这一规范的xml(标准化越来越近了)数据修改部分。为了支持xml(标准化越来越近了)类型,增加了相应的关键字用于注册和管理xml(标准化越来越近了) schema。FOR xml(标准化越来越近了) 和OPENxml(标准化越来越近了)也有所改变,它们在sql server(WINDOWS平台上强大的数据库平台) 2000中被引入用来在关系型数据和xml(标准化越来越近了)之间互相转换,在sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2中对此有所增强以更好的支持xml(标准化越来越近了)数据类型。
  
  xml(标准化越来越近了) 数据类型
  
  xml(标准化越来越近了)能够比sql server(WINDOWS平台上强大的数据库平台)所支持的那些标量数据类型更好的对复杂数据进行建模。例如那些基于字符串的内置数据类型char 或者是varchar并不能够充分有效的利用xml(标准化越来越近了)数据的大量优点。举例来说,如果xml(标准化越来越近了)被存储为一个字符串,那么你可以插入或检索整个xml(标准化越来越近了)文档,甚至能够从中检索连续的字符,但你不能定位查询文档中内容。通过xml(标准化越来越近了)数据类型,sql server(WINDOWS平台上强大的数据库平台) 2005使我们能够查询xml(标准化越来越近了)文档中的一部分,校验文档是否满足xml(标准化越来越近了) schema,甚至能够定位修改文档中的内容。 它也将传统的关系型数据和非结构化和半结构化的数据集成在一起,而这在sql server(WINDOWS平台上强大的数据库平台) 2000中是不可能的。在sql server(WINDOWS平台上强大的数据库平台) 2005中, xml(标准化越来越近了)数据被作为二进制大对象 (BLOBs)内部存放,使得重解析和压缩更有效。
  
  一个xml(标准化越来越近了) schema集可以和类型化xml(标准化越来越近了)的一列相关联,这样便能够对已存储的xml(标准化越来越近了)数据的约束、插入、改写、值的类型进行校验,也能够优化存储和查询性能。sql server(WINDOWS平台上强大的数据库平台) 2005 也提供了一些DDL 语句用于管理服务器上的schema。
  
  读写 xml(标准化越来越近了)
  
  sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 也对在sql server(WINDOWS平台上强大的数据库平台) 2000中引入的FOR xml(标准化越来越近了) 和 OPENxml(标准化越来越近了) 功能作了增强。
  
  FOR xml(标准化越来越近了)
  
  sql server(WINDOWS平台上强大的数据库平台) 2000 中的FOR xml(标准化越来越近了) 字句并不支持在服务器上处理xml(标准化越来越近了)结果,你不能把xml(标准化越来越近了)结果存在表中,或分配给一个变量。sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 通过支持xml(标准化越来越近了)数据类型和在服务器端处理xml(标准化越来越近了)增强了FOR xml(标准化越来越近了)功能,实现这一点是通过在FOR xml(标准化越来越近了)中增加TYPE 指示。例如,SELECT...FOR xml(标准化越来越近了) TYPE 语句所生成的xml(标准化越来越近了)数据类型的结果集可被分配给一个本地的xml(标准化越来越近了)变量,也可被用在INSERT 语句中用来插入xml(标准化越来越近了)数据类型列。 PATH 样式指定了列的值如何表现在xml(标准化越来越近了)数的路径中。包含在FOR xml(标准化越来越近了)中的TYPE和PATH选项简化了复杂xml(标准化越来越近了)的生成,比FOR xml(标准化越来越近了) EXPLICIT查询更易使用。
  
  OPENxml(标准化越来越近了)
  
  sql server(WINDOWS平台上强大的数据库平台) 2000 基本上把FOR xml(标准化越来越近了) 子句和OPENxml(标准化越来越近了) 行集函数配对使用。也就是说,可以用FOR xml(标准化越来越近了)把关系型数据检索为xml(标准化越来越近了),用OPENxml(标准化越来越近了)可以把xml(标准化越来越近了)转为关系型数据,从而设置SQL连接和执行查询。sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 增强了OPENxml(标准化越来越近了)的功能。处理xml(标准化越来越近了)数据类型外,还支持几种新的数据类型,如用户定义类型(UDTs)。你可以在OPENxml(标准化越来越近了) WITH子句中使用它,你也可以传递一个xml(标准化越来越近了)数据类型实例给sp_preparedocument。
  
  XQuery 支持
  
  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有些显著的增强,如:类型化,特别的函数,支持更好的反复,结果集排序,结构等。
  
  sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 提供了更多的XQuery 功能,它允许在数据层操作xml(标准化越来越近了)对象。它支持XQuery 1.0 Working Draft of November 15, 2003的一个静态类型子集。
  
  DML 扩展
  
  当前的 XQuery 规范包括查询的语法和语义词,但没有xml(标准化越来越近了)文档修改的部分。xml(标准化越来越近了)数据修改语言(DML)是XQuery数据修改特性的扩展, sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 增加了3个关键字: insert, update和 delete,他们都被用在xml(标准化越来越近了)数据类型的modify() 方法中。
  
  新的应用程序框架
  
  sql server(WINDOWS平台上强大的数据库平台) 2005引入了新的sql server(WINDOWS平台上强大的数据库平台)应用程序框:Service Broker。 Service Broker 是一个分布式应用程序框架,它在数据库到数据库级上提供了可靠的异步通讯。
  
  SQL Service Broker
  

  在过去10年来,电子商务应用的发展提出了在数据库应用程序间管理工作流的需求。当一个在线客户发出一个购书订单,这个订单需要提交在库存、送货、信用卡系统中提交事务,也需要使用另一个Web应用程序发出订单确认信息。等待这些应用依次完成并不是好的方法,sql server(WINDOWS平台上强大的数据库平台) 2005 提供了一个新的可伸缩的架构用来构建异步信息处理。
  
  Service Broker 技术通过使用T-SQL DML语言扩展允许内部或外部应用程序发送和接收可靠、异步的信息流。信息可以被发送到发送者所在数据库的队列中,获发送到同一sql server(WINDOWS平台上强大的数据库平台)实例的另一个数据库,或发送到同一服务器或不同服务器的另一个实例。
  
  Reporting Services
  
  随着sql server(WINDOWS平台上强大的数据库平台) 2005的发布, 微软在它集成商业智能平台上扩展了一个主要的组件。sql server(WINDOWS平台上强大的数据库平台) Reporting Services 可以在任何商业环境中,非常容易的把正确的数据传递给正确的人,从而扩展了微软商业智能的前景。
  
  Reporting Services 是一个创建、管理和发布传统和交互式报表的完全基于服务器的平台。它包括你创建、分发和管理报表所需的所有功能。与此同时,它的模块化设计和可扩展的应用程序编程接口(APIs)使软件开发者、数据提供者和企业能够把报表集成在现有系统和第三方应用程序中。
  
  sql server(WINDOWS平台上强大的数据库平台) 2005中的Reporting Services包括:
  
  1.一个完整的用来创建、管理和查看报表的工具。
  2.一个用来存储和处理报表的引擎。
  3.一个可扩展架构和开放接口,可在不同IT环境中嵌入报表和集成解决方案。
  
  通知服务
  
  Microsoft sql server(WINDOWS平台上强大的数据库平台) 通知服务是一个用来开发和部署消息通知应用程序的平台。通知是个性化、时效性的信息,可以被发送给多种不同的设备。
  
  通知反映了订阅者的喜好,订阅者可以进入他感兴趣的订阅。如,“当Adventure Works股票价格达到$70.00时通知我”,或“当我这个团队的策略文档被更新时通知我”。
  
  一旦触发事件发生,通知便被生成并发送给用户,通知也可根据用户预定义的调度来生成和发送。用户的订阅规定了何时通知被生成和发送。
  
  通知可以被分送给不同的设备,如,一个通知可以被发送给用户的移动电话,个人数字助手(PDA),Microsoft Windows Messenger, 或 e-mail 账户。因为用户常使用这些设备,所以通知是理想的发送高优先级信息的手段。
  
  sql server(WINDOWS平台上强大的数据库平台) Mobile Edition
  
  在sql server(WINDOWS平台上强大的数据库平台) 2000 中出现的 sql server(WINDOWS平台上强大的数据库平台) 2000 Windows CE 版现已是sql server(WINDOWS平台上强大的数据库平台) Mobile 3.0版。在其中有很多和开发人员有关的新的关键特性:
  
  1.你现在可以直接用sql server(WINDOWS平台上强大的数据库平台) Management Studio 在桌面或设备上创建一个sql server(WINDOWS平台上强大的数据库平台) Mobile 版数据库。你也可以直接从sql server(WINDOWS平台上强大的数据库平台) Management Studio中操作这个数据库的模式,而无需考虑这个数据库是在桌面还是在移动设备上。你可以使用sql server(WINDOWS平台上强大的数据库平台) Management Studio来对设备或桌面上的sql server(WINDOWS平台上强大的数据库平台) Mobile 版数据库允许查询。你可以充分利用新的sql server(WINDOWS平台上强大的数据库平台) Mobile 版的特性:一个GUI界面的xml(标准化越来越近了) showplan,就像本机sql server(WINDOWS平台上强大的数据库平台)一样,可以使用查询暗示来覆盖sql server(WINDOWS平台上强大的数据库平台) Mobile的查询优化器。这是第一次可以在设备上控制优化计划。
  2.你现在可以对DTS对象编码来交换数据。
  3.在sql server(WINDOWS平台上强大的数据库平台) 2005中从SQLResult 集派生出新的SqlCeResult 集。这将使得sql server(WINDOWS平台上强大的数据库平台) Mobile版有个真正可滚动的、可更新的光标。它也允许绑定到设备上的数据对象。
  4.你可以在主应用程序打开的同时编写一个应用程序来同步数据,你现在可以在同一时刻用两个不同的应用程序来访问设备上的同一个数据库。
  5.你可以对同步状态栏进行编程以得到同步状态通知,以前没有办法做到这一点,无法通知用户设备并没有停止响应。
  6.你可以通过更为主动的页回收策略来维护一个更小的数据库。
  7.你可以使用sql server(WINDOWS平台上强大的数据库平台)语法来共享参数查询代码。
  
  语言增强
  
  Transact-SQL 增强

  
  Transact-SQL 一直以来就是sql server(WINDOWS平台上强大的数据库平台)所有编程的基础。sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 提供了很多新的语言功能用以开发可伸缩的应用程序。这些增强包括错误处理、新的递归查询功能、对新的sql server(WINDOWS平台上强大的数据库平台)数据库引擎功能的支持等。sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 中的 Transact-SQL 增强功能提高了您在编写查询时的表达能力,使您可以改善代码的性能,并且扩充了您的错误管理能力。Microsoft 在增强 Transact-SQL 方面不断付出的努力显示了T-SQL在 sql server(WINDOWS平台上强大的数据库平台) 中具有的重要作用、T-SQL的威力以及对它的将来所怀有的坚定信念。
  
  递归查询和通用表表达式
  
  通用表表达式 (CTE) 是一个可以由定义语句引用的临时命名的结果集。在它们的简单形式中,您可以将 CTE 视为更类似于非持续性类型视图的派生表的改进版本。在查询的 FROM 子句中引用 CTE 的方式类似于引用派生表和视图的方式。只须定义 CTE 一次,即可在查询中多次引用它。在 CTE 的定义中,可以引用在同一批处理中定义的变量。您甚至可以在 INSERT、UPDATE、DELETE 和 CREATE VIEW 语句中以与使用视图类似的方式使用 CTE。但是,CTE 的真正威力在于它们的递归功能,即 CTE 可以包含对它们自身的引用。当您希望像引用表一样引用查询结果,但是不希望在数据库中创建持久性视图时,可以使用派生表。但是,派生表具有 CTE 中所不具有的限制:您无法只在查询中定义派生表一次然后多次使用它。相反,您必须在同一查询中定义多个派生表。但是,您可以定义 CTE 一次并在查询中多次使用它,而无须在数据库中持续保存它。
  
  非递归 CTE 可以改善语句的表达能力。但是对于每一段使用非递归 CTE 的代码,您通常可以通过使用其他 Transact-SQL 结构(例如,派生表)来实现同一功能,只不过代码更长点。对于递归 CTE,情况则迥然不同。当 CTE 引用它本身时,它被视为递归的。递归的 CTE 是根据至少两个查询(或者,用递归查询的说法,为成员)构建的。一个是非递归查询,也称为锚定成员 (AM)。另一个是递归查询,也称为递归成员 (RM)。查询由 UNION ALL 运算符连接为一个单独的CTE。
  
  PIVOT 和 UNPIVOT 操作符
  
  sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 提供了两个新的关系运算符: PIVOT 和 UNPIVOT, 你可以在查询的FROM子句中使用它。它们对一个输入表值表达式执行某种操作,并且产生一个输出表作为结果。PIVOT 运算符将行旋转为列,并且可能同时执行聚合。它基于给定的枢轴列扩大输入表表达式,并生成一个带有与枢轴列中的每个唯一值相对应的列的输出表。
  
  PIVOT 运算符可用来处理开放架构方案以及生成交叉分析报表。在开放架构方案中,您需要用事先不知道或因实体类型而异的属性集来维护实体。应用程序的用户动态定义这些属性。您将属性拆分到不同的行中,并且只为每个实体实例存储相关的属性,而不是在表中预定义很多列并存储很多空值。PIVOT 使您可以为开放架构和其他需要将行旋转为列的方案生成交叉分析报表,并且可能同时计算聚合并且以有用的形式呈现数据。
  
  UNPIVOT 运算符执行与 PIVOT 运算符相反的操作;它将列旋转为行。它基于旋转列收缩输入表表达式。UNPIVOT 运算符使您可以规格化预先旋转的数据。
  
  APPLY 操作符
  

  通过 APPLY 运算符,sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 使您可以在相关子查询中引用表值函数。APPLY 关系运算符使您可以针对外部表表达式的每个行调用指定的表值函数一次。您可以在查询的 FROM 子句中指定 APPLY,其方式与使用 JOIN 关系运算符类似。APPLY 具有两种形式:CROSS APPLY 和 OUTER APPLY。
  
  CROSS APPLY 为外部表表达式中的每个行调用表值函数。您可以引用外部表中的列作为该表值函数的参数。CROSS APPLY 从该表值函数的单个调用所返回的所有结果中返回统一的结果集。如果该表值函数对于给定的外部行返回空集,则不会在结果中返回该外部行。
  
  OUTER APPLY 非常类似于 CROSS APPLY,但是它还从表值函数为其返回空集的外部表中返回行。空值作为与表值函数的列相对应的列值返回。
  
  事务异常处理
  
  以前版本的 sql server(WINDOWS平台上强大的数据库平台) 要求在每个怀疑可能出错的语句之后包含错误处理代码,就象Microsoft Visual Basic 6.0那样。要将错误检查代码集中在一起,必须使用标签和 GOTO 语句。此外,诸如数据类型转换错误之类的错误会导致批处理终止;因此,无法用 Transact-SQL 捕获这些错误。sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 引入了一种简单而强大的异常处理机制:TRY...CATCH Transact-SQL 结构,就象Visual Basic .NET and C#中那样。现在可以捕获和处理过去会导致语句、级、批、或事务处理终止的错误,前提是这些错误不会导致连接中断(通常是严重度为 21 及以上的错误,例如,表或数据库完整性可疑、硬件错误等等)。
  
  为了实现错误处理,只需要把想执行的代码写入BEGIN TRY/END TRY 块中,接着把错误处理代码写入BEGIN CATCH /END CATCH 块中。注意一个 TRY 块必须要有一个对应的CATCH 块,否则,将会出现语法错误。
  
  DDL 事件通知
  
  sql server(WINDOWS平台上强大的数据库平台) 2005 Beta 2 使您可以捕获 DDL 和系统事件,并且向 Service Broker 部署发送事件通知。和触发器地同步处理相反的是,事件通知是一种允许异步使用的事件传递机制。事件通知将 xml(标准化越来越近了) 数据发送给指定的 Service Broker 服务,而事件使用者异步使用该数据。事件使用者可以在Service Broker接受语句中使用的WAITFOR 子句扩展来等待新数据的到达。
  
  Full Text 搜索增强
  
  sql server(WINDOWS平台上强大的数据库平台) 2005 支持强大的full-text应用程序。编目能力得以加强以提供对目录的更大的灵活性, 查询性能和可伸缩性也有了巨大的提升,新的管理工具也为full-text 实施提供更强的功能。
  
  安全增强
  
  sql server(WINDOWS平台上强大的数据库平台) 2005 受益于微软公司提出的可信赖计算――微软公司旨在提高客户在安全性、私有性、可靠性和业务完整性领域体验的计划。作为微软公司在2002年1月在全公司范围内实施计划的一部分,微软随后引入了新的开发流程,使得开发的产品无论是在设计、默认设置还是在部署方面,安全性都得到充分的保证。sql server(WINDOWS平台上强大的数据库平台)开发团队已经将这个新的流程带入到sql server(WINDOWS平台上强大的数据库平台)下一代版本――sql server(WINDOWS平台上强大的数据库平台) 2005的开发过程中了, 这使得sql server(WINDOWS平台上强大的数据库平台) 2005 将成为有史以来最具安全性的sql server(WINDOWS平台上强大的数据库平台)
  
  大体上,这些新特性和改进可分为以下三个范围:
  
  1.控制用户访问。sql server(WINDOWS平台上强大的数据库平台) 2005将提供对用户访问sql server(WINDOWS平台上强大的数据库平台)更强大的控制能力,可以通过策略来限定用户的访问。
  2.禁用服务和限制服务配置。管理员能够把对sql server(WINDOWS平台上强大的数据库平台)的访问限定在管理员所指定的某个范围内和某个粒度等级上,这样,管理员就能轻松地管理着一个不违反权限最低原则的系统。由于在安装时默认将禁用某些不是必需的服务,那么,管理员将更多考虑的是决定哪个服务根据需求被启用而不是去找有哪些不必要的服务需要关闭。
  3.减少新特性遭受攻击的“表面积”。从安装的那一刻开始,sql server(WINDOWS平台上强大的数据库平台) 2005遭受攻击的“表面积”就将被最小化,因为在sql server(WINDOWS平台上强大的数据库平台) 2005的整个开发过程中,新特性的安全性已被反复地检查和测试。
  
  小结
  
  Microsoft sql server(WINDOWS平台上强大的数据库平台) 2005 为开发人员提供了构建新型数据库应用程序的多种工具。通过移去代码执行和存储之间的屏障,以及集成xml(标准化越来越近了),sql server(WINDOWS平台上强大的数据库平台) 2005 为数据库开发人员开启了一个无限可能的世界。本文只是对sql server(WINDOWS平台上强大的数据库平台) 2005开发方面的一个介绍。

Tags:SQLServer 数据库 开发

编辑录入:coldstar [复制链接] [打 印]
赞助商链接