日期:2014-04-16  浏览次数:20381 次

本文是根据 Microsoft SQL Server(代号“Yukon”)的 Beta 1 撰写的,其中包含的所有信息均可能更改

:本文是在产品投放生产之前编写的,因此,我们无法保证此处包含的任何细节都与在交付使用的产品中发现的细节完全一致。文中信息描述的是本文发布之时的产品,仅供规划之用。这些信息可在任何时候更改,恕不预先通知。

Transact-SQL 的增强功能
SQL Server Yukon .NET 编程
利用 CLR
在 T-SQL 和托管代码之间选择
用户定义的类型、函数和聚合
托管存储过程
XML 和 SQL Server Yukon
XML 数据类型
XSD 和XML 数据类型
XML 查询
了解 Microsoft XQuery Designer
了解 SQL Server 服务代理
数据库集成
SQL Server Yukon 的可编程场景
小结

在 Microsoft SQL Server? 下一版本(代号为“Yukon”)的规划阶段,考虑更多的是数据库的未来发展以及 SQL Server 的编程能力。Microsoft 内部的开发人员很早就意识到,未来必须引入更加对称的编程模型,还要为不同的数据模型提供更多的灵活性。编程模型对称的目的意味着,普通的数据访问和操作任务可以通过多种途径进行 — 使用 XML、Microsoft .NET 框架或 Transact-SQL (T-SQL) 代码。

这种规划带来的结果就是一个新的数据库编程平台,它在许多方面都进行了扩展。首先,寄主 .NET 框架公共语言运行库 (CLR) 的功能将数据库扩展到过程化编程和托管代码的领域。其次,.NET 框架宿主集成提供了来自 SQL Server 内部强大的对象数据库功能。对 XML 的深入支持是通过功能完善的 XML 数据类型实现的,它拥有关系数据类型的所有功能。此外,还添加了对 XML 查询 (XQuery) 和 XML 架构定义语言 (XSD) 标准的服务器端支持。最后,SQL Server Yukon 包含了 T-SQL 语言的重要增强功能。

这些新的编程模型和增强的语言共同创造了一系列的可编程性,它们补充并扩展了目前的关系型数据库模型。这种体系结构带来的最终结果是能够创建更可伸缩、更可靠、更健壮的应用程序,并提高了开发人员的工作效率。这些模型的另一个结果就是一种称为 SQL 服务代理的新应用程序框架 — 用于异步消息传递的分布式应用程序框架。稍后,我将在文中对 Yukon SQL 服务代理做进一步讨论。现在,请先看看编程模型中的主要更改和增强功能,让我们从 T-SQL 开始。

Transact-SQL 的增强功能

Yukon 为 T-SQL 语言提供了更多新的语言构造和基元,这里无法一一列举。所有这些内容,您均可以在 SQL Server Yukon Books Online 中找到。对 T-SQL 语言的增强功能反映出对 ANSI-99 SQL 规范更有力地遵守,并且这些增强也是对用户请求的响应。T-SQL 中的许多改进主要集中在查询表达方式的改善方面。有几个新的查询类型允许用 T-SQL 代码处理常见情况。例如,递归查询提供了生成材料帐单或层次结构结果集的功能。

Yukon 中的 T-SQL 提供了新的 PIVOT 和 UNPIVOT 运算符。这些运算符对输入表值表达式执行操作,并生成一个输出表作为结果集。PIVOT 运算符可将行旋转为列,根据该思路可以选择性地执行聚合或其他数学计算。这就拓宽了基于给定旋转列的输入表表达式,并生成了一个输出表,其中的一列为旋转列中的每个唯一值。UNPIVOT 运算符执行的操作与 PIVOT 相反;它将列旋转为行。UNPIVOT 运算符收缩了基于旋转列的输入表表达式。

Yukon 引入了一种新的、简单的但更强大的异常处理机制,该机制采用 TRY/CATCH T-SQL 构造的形式。现在,便可以捕获和处理那些使批处理终止的事务中止错误了。此外,还有一些新的语言构造,用于安全、复制、通知服务、XML 以及 .NET 框架提供的所有功能。服务器端的 .NET 框架实现是 SQL Server 产品周期中的重要进展。

SQL Server Yukon .NET 编程

现在,开发人员可以利用任意 Microsoft .NET 兼容的语言(包括 Visual Basic .NET 和 C#)编写存储过程、触发器和用户定义的函数 (UDF)。此外,三种新对象(用户定义的类型 (UDT)、聚合和函数)还可以用托管代码来创建。CLR 是 .NET 框架的核心,它为所有基于 .NET 框架的代码提供了执行环境。CLR 提供了程序执行所需的各种函数和服务,包括实时编译、内存管理和分配、类型安全强制、异常处理、线程管理以及安全。SQL Server Yukon 作为这一功能的宿主,就象操作系统寄主应用程序一样。

作为 CLR 集成的结果,Yukon 还提供了自动内存管理、资源分配和垃圾收集等功能。通过进入 SQL Server 执行空间,SQL Server 可提供 .NET 程序集对数据库对象的直接访问。数据访问通过一种特殊形式的 ADO.NET 实现。本文不讨论数据库中 ADO.NET 功能这一部分。但是,由于访问方法与那些开发人员熟悉的方法非常类似,因此使用 CLR 的功能很容易。

Yukon 将 .NET 框架与 SQL Server 集成的方式为数据库开发人员提供了几个主要优势,包括:

增强的编程模型 CLR 兼容的语言在许多方面都远胜于 T-SQL,它为 SQL 开发人员提供了之前无法使用的构造函数和功能。此外,还提供了一组类库(框架 API),它比 SQL 本身提供的内置函数更丰富。

<