Microsoft SQL Server 2005 中的 XML 支持(11)

更多信息

要获得更多关于通过 XML 视图创建和使用 updategram 修改数据的信息,请参阅 Using Updategrams to Modify Data

通过 XML 视图大量加载 XML 数据

XML Bulk Load 是一个 COM 对象,它允许您将 XML 数据加载到 SQL Server 表中。虽然通过使用 INSERT 语句和 OPENXML 函数可以将 XML 数据插入 SQL Server 数据库中,但是当需要插入大量的 XML 数据时,这种大量加载实用程序提供了更高的性能。XML Bulk Load 解释映射架构并标识 XML 数据要插入的表。然后,它将 XML 数据“切碎”并存放到关系表中。

在进行大量加载处理时,由于源 XML 文档可能很大,所以并不将整个文档读入内存。相反,XML Bulk Load 将 XML 数据解释为流,并且边解释它边读取它。当该实用程序读取数据时,它标识数据库表,从 XML 数据源生成适当的记录,然后将记录发送到 SQL Server,以供插入。

要获得更多关于 Bulk Load 如何工作和使用的信息,请参阅 Performing Bulk Load of XML Data

SQLXML 数据访问方法

由于有了 SQL Server 2000,所以又增加了两种访问 SQLXML 功能的新方法:

SQLXML 托管类

SQLXML Web 服务

另外,还增强了对 SQL Server 的 HTTP 访问,以提供对模板中的 Updategram 的支持。

SQLXML 托管类

SQLXML 托管类公开 Microsoft .NET 框架内的 SQLXML 3.0 的功能。通过 SQLXML 托管类,可以编写 C# 应用程序从 SQL Server 的实例访问 XML 数据,将数据带入 .NET 框架环境,处理数据,并将更新重新发送回 SQL Server 以应用这些更新。

要获得更多关于如何使用 SQLXML 托管类的细节,请参阅 SQLXML .NET Support

SQLXML Web 服务

SQLXML 中的 Web 服务支持将 SQL Server 作为 Web 服务公开,从而为客户端提供 SQL Server 功能。可以将 SOAP HTTP 请求发送到正在运行 SQLXML 的服务器,以执行存储过程、用户定义的函数 (UDF) 和模板。

通过使用所包括的用于 SQL Server 实用程序的 IIS 虚拟目录管理,也可以设置 Web 服务。一旦 Web 服务虚拟目录设置完毕,就可以将存储程序和模板添加到站点。然后,客户端就可以通过 HTTP 之上的 SOAP 协议来访问这些服务。

SQL Server 2005 现在包括对服务器中的 Web 服务的本机支持。然而,只有 SQLXML 支持通过 Web 服务访问 XML 模板。另外,可以在不同于数据库服务器的服务器上设置 SQLXML,创建远离数据库的单独中间层盒子。

要获得更多关于 SQLXML Web 服务的细节,请访问 Web Services (SOAP) Support in SQLXML

.NET 框架 2.0 中的 XQuery

为了在 SQL Server 2005 中补充引入 XQuery,在 Visual Studio 2005 Beta 的 .NET 框架 V2.0 版中,System.Xml.Query 命名空间内置了一个中间层 XQuery 处理器。在这一部分中,我们说明该处理器如何提供查询和聚合完全不同的数据源的能力,例如文件和关系数据存储 SQL Server 数据库。

简单的说,下面的代码示例显示了一个查询,用于选择书店中所有 genre 属性值为 autobiography 的书,并且将这些书的标题作为一个新的书店写出。执行查询的称为“books.xml”的本地文件被加载,而将结果写入另一个称为“output.xml”的本地文件。

using (XmlWriter writer = XmlWriter.Create("output.xml"))
{
XQueryCommand xq = new XQueryCommand();
   string query =
         "<bookstore>" +
         "{ for $s in /bookstore/book " +
         "where $s/@genre='autobiography' " +
         "return $s/title }" +
         "</bookstore>";
   xq.Compile(query);
   xq.Execute("books.xml", new XmlUrlResolver(), writer);
}

查询表达式如下:

<bookstore>
{for $s in /bookstore/book
where $s/@genre='autobiography'
return $s/title}
</bookstore>

XQueryCommand 类是 XQuery 处理器。首先由 Compile 方法编译查询表达式,该方法对值进行类型检查,并且生成一个可执行文件。Execute 方法执行接受 books.xml 文档作为输入的查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值