日期:2013-02-02  浏览次数:20633 次

  一、简介

  Microsoft SQL Server 2005 中的严重更改之一是包含了 XML 数据类型。此数据类型是第一类类型,就像 INT 或 VARCHAR 一样,而且 SQL Server 2005 允许使用一系列 XML 特定的函数对此数据类型进行就地查询和处理。它还支持存储数据库中的 XML 架构的集合,从而启用基于数据库的架构验证。另外,SQL Server 2005 大大地扩展了 XML 组合(SELECT ... FOR XML 语句)的功用,扩展了 OpenXML() XML 分解函数,并针对 XML 数据类型提供了一个新的 nodes() 函数以进行更轻量级的分解。

  既然对数据库服务器加强了此新的 XML 功用,那么对 Microsoft ADO.NET 2.0 中的 SqlClient 数据提供程序也进行加强就不会令人感到惊奇了。对 ADO.NET DataSet 也有更改,以便支持类型 XML 的 DataColumn,而且 System.Data 和 System.Xml 之间的“集成点”得到了拓宽。在本文中,我将探究在客户端上使用 SQL Server 2005 XML 数据类型。

  SQL Server 2005 可以产生两类 XML 输出。语句 SELECT * FROM AUTHORS FOR XML AUTO 产生 XML 流,而不是一列一行的行集。该输出类型与 SQL Server 2000 中的输出类型相比没有改变。只是由于查询分析器工具中的限制,XML 流输出在 SQL Server 查询分析器中才显示为一列一行的行集。您可以通过其特定的独一标识符名称“XML_F52E2B61-18A1-11d1-B105-000805F49916B”来将这种流与“普通”列区分开来。此名称实际上是底层 TDS(这是一种表格式的数据流,SQL Server 网络格式)分析器的指示器,在这种分析器中,列应该流至客户端,而不是像普通行集那样发送。有一种特殊的方法 SqlCommand.ExecuteXmlReader 用来在客户端上检索此特殊的流。在 SQL Server 2005 中,SELECT ... FOR XML 语句通过许多方式得到了加强。这里仅提少数几种: