数据库引擎可编程性增强功能

Microsoft SQL Server 2005 在数据库引擎中引入了多项能提高程序员的开发能力和工作效率的改进和新功能。数据库对象可用基于 Microsoft .NET Framework 的语言编写,如 Microsoft Visual C#。在 Microsoft Visual Studio 环境中集成了开发和调试功能,利用这些功能,开发人员可以使用与开发基于 .NET Framework 的组件和服务相同的工具开发数据库对象。Transact-SQL 语言得到了扩展,例如,改进了错误处理功能,支持递归查询。

此外还对应用程序用来访问数据库引擎实例的数据访问接口进行了增强,以提高程序员的工作效率。有关详细信息,请参阅数据访问接口方面的增强功能

以下列出 Transact-SQL 语言的主要增强功能。有关 Transact-SQL 新功能的其他信息,请参阅 Transact-SQL 中的新增功能和增强功能 (Transact-SQL)

可编程性增强功能

Microsoft .NET Framework:公共语言运行时集成

Microsoft .NET Framework 公共语言运行时 (CLR) 现在寄宿于 SQL Server 数据库引擎中。此 CLR 集成环境支持过程数据库对象,包括用基于 .NET Framework 的语言(如 Microsoft Visual C# 和 Visual Basic .NET)编写的函数、存储过程和触发器。基于 .NET Framework 的语言支持 Transact-SQL 语言中所没有的逻辑和功能,也就是,现在可以将更复杂的逻辑纳入数据库对象中。用户定义的类型和聚合也可以用基于 .NET Framework 的语言编写,以生成比 SQL Server 较早版本中提供的数据类型更为复杂的数据类型。

CLR 集成编程环境已集成到 Visual Studio 开发环境中。开发人员使用与开发客户端或中间层 .NET 组件和服务相同的工具来开发和调试数据库对象。

有关详细信息,请参阅Introduction to Common Language Runtime (CLR) Integration

Microsoft .NET Framework:用户定义聚合

用基于 .NET Framework 的语言编写的用户定义聚合函数扩展了 Transact-SQL 中包括的基本聚合函数,如 SUM、MIN 和 MAX。聚合函数是处理多个数据值并返回单个值的函数。.NET Framework 聚合函数不把整个结果集检索到应用程序并在应用程序中执行复杂的聚合逻辑,而是可以在数据库引擎实例中执行此逻辑,并仅将最终值返回到应用程序。

有关详细信息,请参阅 CLR User-Defined Aggregates

Microsoft .NET Framework:用户定义类型

通过 CLR 用户定义类型 (UDT),可以用 .NET Framework CLR 所支持的任何语言实现数据库数据类型。CLR 用户定义类型在基于 .NET Framework 的语言中以类的方式实现,并可具有用该类的字段、方法和属性定义的复杂结构和行为。CLR 用户定义类型与数据库引擎类型系统集成,并可以在所有使用内置类型的上下文中使用。

有关详细信息,请参阅 CLR User-Defined Types

Microsoft .NET Framework:存储过程、触发器和用户定义函数

数据库过程对象可用基于 .NET Framework 的语言编写,以纳入比 Transact-SQL 语言所支持的逻辑更为复杂的逻辑。程序员使用与开发 .NET Framework 组件和服务相同的语言和开发环境来开发对象。

有关详细信息,请参阅 CLR Stored ProceduresCLR TriggersCLR User-Defined Functions

Web 访问:本机 HTTP SOAP 访问

可以对数据库引擎的实例配置 HTTP 端点和地址,以便应用程序可以将 SOAP 请求发送到该端点或地址。数据库引擎的实例直接接收包,而无需配置任何中间层服务,如 Microsoft Internet 信息服务 (IIS) 服务器。

有关详细信息,请参阅在 SQL Server 2005 中使用本机 XML Web 服务

Transact-SQL 增强功能:新增 xml 数据类型

数据库引擎引入了新的 xml 数据类型,这种数据类型支持在数据库中存储 XML 文档和片段。XML 实例可以存储在用 xml 类型创建的列、存储过程参数或变量中。

有关详细信息,请参阅 xml 数据类型

Transact-SQL 增强功能:FOR XML 增强

可以对 FOR XML 语句进行嵌套以创建 XML 文档的层次结构。FOR XML 语句的结果可以存储在以新的 xml 数据类型定义的列、存储过程参数或变量中。

有关详细信息,请参阅新增的 FOR XML 功能

Transact-SQL 增强功能:改进的错误处理

编写 Transact-SQL 批、存储过程、触发器以及用户定义函数的程序员可用其熟悉的 TRY-CATCH 逻辑来捕获并处理错误条件。

有关详细信息,请参阅处理数据库引擎错误

Transact-SQL 增强功能:新增元数据视图

SQL Server 2005 数据库引擎引入了两组新的视图来查询元数据。系统目录视图提供有关对象的信息,如 SQL Server 数据库中定义的表、存储过程和约束。动态管理视图提供有关数据库引擎实例当前状态的信息。动态管理视图显示不保留到磁盘的关于内存结构的信息,如有关锁、线程和任务的信息。

有关详细信息,请参阅查询 SQL Server 系统目录

Transact-SQL 增强功能:排名函数

数据库引擎引入了称为排名函数的一类新函数。构成该类的函数有:

  • RANK
  • DENSE_RANK
  • NTILE
  • ROW_NUMBER

这些函数返回分区中每行的排名值。

有关这些函数的列表的详细信息,请参阅排名函数 (Transact-SQL)

Transact-SQL 增强功能:数据定义语言 (DDL) 触发器

除了对修改数据的数据操作语言语句(INSERT、UPDATE 和 DELETE)所激发的触发器提供支持外,数据库引擎还包括一类新的触发器,由修改数据库对象的 DDL 语句(如以 CREATE、ALTER 或 DROP 开头的语句)激发。DDL 触发器可用于审核或控制对数据库架构的更改。

有关详细信息,请参阅 DDL 触发器

Transact-SQL 增强功能:事件通知

事件通知是一种新的对象,可以在数据库引擎中对其进行编程。事件通知将有关 Transact-SQL DDL 语句和 SQL 跟踪事件的信息发送到 Service Broker 服务。事件通知可用于记录和检查数据库上出现的更改或活动。事件通知异步执行,并可为 DML 触发器、DDL 触发器和 SQL 跟踪提供备选的编程方案。

有关详细信息,请参阅实现事件通知

Transact-SQL 增强功能:队列处理扩展插件

三种 Transact-SQL 增强功能简化了在松散耦合的、可靠的、Internet 规模的业务流程自动化系统中生成消息队列应用程序的过程。INSERT、UPDATE 和 DELETE 现在支持 OUTPUT 子句,它们根据语句修改的行来返回数据。READPAST 现在可以在 UPDATE 和 DELETE 语句中指定,让这些语句跳过其他任务持有的队列行并从队列中选取下一可用行。

有关详细信息,请参阅 OUTPUT 子句 (Transact-SQL)锁定提示

Transact-SQL 增强功能:统一大型对象编程模型

在 SQL Server 的早期版本中,超过 8,000 个字节的长字符串需要以 textntextimage 数据类型存储,这些数据类型具有与较短字符串数据类型(charncharvarcharnvarcharbinaryvarbinary)不同的编程模型。数据库引擎现在支持较短数据类型的 MAX 长度规范。指定了 MAX 后,这些数据类型就可以存储与 textntextimage 大小相同的字符串(可达 2 GB),但处理方法与存储较短字符串时相同。

有关详细信息,请参阅使用大值数据类型

Transact-SQL 增强功能:递归查询

公用表表达式 (CTE) 是在 SELECT、INSERT、UPDATE 或 DELETE 语句执行过程中暂时存储的结果集。利用 CTE,可使用递归查询并可通过取代临时表或视图来简化逻辑。

有关详细信息,请参阅使用公用表表达式

Transact-SQL 增强功能:新增 APPLY 运算符

APPLY 运算符支持为外部表引用返回的每个行调用表值表达式(表值函数或子查询)。为外部表引用中的每个行计算表值表达式的值。

有关详细信息,请参阅使用 APPLY

Transact-SQL 增强功能:新增 PIVOT 和 UNPIVOT 运算符

新的 PIVOT 和 UNPIVOT 运算符对结果集进行旋转,这样,列变成了行,行变成了列。这称为旋转数据或创建交叉报表。在早期版本的 SQL Server 中可以进行这些操作,但需要复杂逻辑;现在通过使用 PIVOT 和 UNPIVOT 这一逻辑得到了简化。

有关详细信息,请参阅使用 PIVOT 和 UNPIVOT

Transact-SQL 增强功能:查询通知

查询通知允许应用程序对结果集进行缓存,并请求数据库引擎在其他应用程序修改任一基础数据时向其发出通知。使用查询通知的应用程序不必定期验证数据库中的数据状态。仅在数据库引擎通知应用程序有更改发生时,应用程序才验证数据。

有关详细信息,请参阅使用查询通知

Transact-SQL 增强功能:对 OPENROWSET 执行的大容量操作

OPENROWSET 现在支持从数据文件中大容量复制数据的 BULK 操作。通过使用新的表提示和大容量选项(如 BULK_BATCHSIZE 和 FORMATFILE)对 OPENROWSET 大容量操作进行控制。新 bulk_column_alias 子句支持将列名分配给大容量操作数据。

有关详细信息,请参阅 OPENROWSET (Transact-SQL)表提示 (Transact-SQL)

Transact-SQL 增强功能:TOP 增强

TOP 运算符得到了增强,可以使用任何数值表达式(如变量名),而不是仅使用整数来指定该运算符返回的行数。TOP 现在还可以在 INSERT、UPDATE 和 DELETE 语句中指定。

有关详细信息,请参阅 TOP (Transact-SQL)

Transact-SQL 增强功能:分布式查询

EXECUTE 语句现在支持 AT LinkedServer 子句,该子句指定在链接服务器上执行存储过程。CONTAINS 全文谓词支持由四部分构成的名称以对链接服务器执行查询。分布式查询还支持新的大型对象数据类型 nvarchar(max)varchar(max)varbinary(max)。另外还添加了新的 SQL 跟踪事件,以帮助分析分布式查询和 OLE DB 访问接口之间的交互。

有关详细信息,请参阅 EXECUTE (Transact-SQL)CONTAINS (Transact-SQL)分布式查询的数据类型映射OLEDB 事件类别

Transact-SQL 增强功能:TABLESAMPLE

新的 TABLESAMPLE 子句限制查询处理的行数。与仅返回结果集中第一批行的 TOP 不同,TABLESAMPLE 返回从查询所处理的整个行集中选择的行。

有关详细信息,请参阅使用 TABLESAMPLE 限制结果集

Transact-SQL 增强功能:新增 CASCADE 完整性约束

REFERENCES 子句现在支持级联引用完整性操作 SET NULL 和 SET DEFAULT。SET NULL 指定级联引用完整性操作将外键设置为 NULL。SET DEFAULT 指定将外键设置为定义的列默认值。

有关详细信息,请参阅级联引用完整性约束

Transact-SQL 增强功能:溢出数据可以超过页大小

如果行包含使用 nvarcharvarcharvarbinarysql_variant 数据类型的长度可变的列,则可以超过 8,060 个字节的限制。如果这些长度可变列的组合宽度导致行超出页大小的限制,那么数据库引擎可能将数据从长度可变的列移到单独的页中。

有关详细信息,请参阅行溢出数据超过 8 KB

数据库管理编程:新增 SQL 管理对象 (SMO) API

SMO 对象模型扩展并取代分布式管理对象 (DMO) 对象模型。SMO 对象模型为配置和管理数据库引擎实例提供了多种类。复制管理对象 (RMO) 对象模型是对 SMO 对象模型的补充,它提供了用于配置与管理复制的一些类。

有关详细信息,请参阅 SQL Server Management Objects (SMO)

数据库管理编程:新增 SQL Server WMI 提供程序

计算机管理的 WMI 提供程序是一种实例提供程序。此层的目的是提供与 API 调用交互的统一方法,API 调用对服务器和客户端网络实用工具功能请求的注册表操作进行管理,并对计算机管理器管理单元组件的选定 SQL 服务提供增强的控制和操作。

有关详细信息,请参阅WMI Provider for Configuration Management

服务器事件的 WMI 提供程序使用户可以用 Windows Management Instrumentation (WMI) 监视 SQL Server 中的事件。该提供程序的运行方式是将 SQL Server 转换为托管的 WMI 对象。在 SQL Server 中所有能生成事件通知的事件都可以通过此提供程序由 WMI 充分利用。此外,SQL Server 代理作为与 WMI 交互的管理应用程序,可以对这些事件做出响应,从而扩大 SQL Server 代理早期版本所覆盖的事件范围。

有关详细信息,请参阅 WMI Provider for Server Events

请参阅

概念

数据库引擎增强功能

帮助和信息

获取 SQL Server 2005 帮助