设为首页
加入收藏夹

SQL Server 2000 XML 概述
浏览选项:

  摘要:在一个任务关键数据存储于不同异构源的世界中,可扩展标记语言 (XML) 通过一
种标准格式为不同应用程序间的数据交换和不同系统间的集成提供了强大的机制。
  XML 已被紧密集成到 Microsoft® SQL Server™ 关系数据库管理系统
(RDBMS) 当中,可以帮助开发人员建立下一代 Web 和企业应用程序。本白皮书讲述了 SQL
Server 2000 中的 XML 功能以及这些功能与 Oracle 中的功能比较。
  为何实现 XML 与 RDBMS 的集成?
  XML 支持以下商业方案下的信息交换:
  企业对企业 (B2B)
  不同供应商的集成供应链。
  企业对消费者 (B2C)
  要求从数据库获取数据的基于浏览器的应用程序。
  企业内
  集成,例如来自不同供应商的企业资源规划 (ERP) 和客户关系管理 (CRM) 软件。
  这些商业方案要求为信息交换提供以下 XML 功能:
  映射松散结合的商业系统。
  SQL Server 2000 通过 XML 视图、XPath 查询和 SELECT 语句为关系数据提供 XML 视图
。从 XML 数据到关系表的映射是使用 OPENXML 和注释架构提供的。
  对数据库的安全 HTTP 连接。
  对任意来源的 XML 数据的查询、更新和加载能力。
  SQL Server 2000 为 SQL Server (SQLOLEDB) 和 Microsoft ActiveX® 数据对象
(ADO) 访问存储于 SQL Server 中的数据提供了 URL 和 Microsoft OLE DB 提供程序。
  SQL Server 2000 中的 XML 提供程序
  Microsoft® SQL Server™ 2000 是适合建立基于 XML 的应用程序的高度可伸
缩和可靠的平台。SQL Server 2000 提供了以下 XML 功能:
  HTTP 访问
  用于以 XML 格式检索结果的新的 SELECT 语句选项 (FOR XML)
  XML 模式
  XML 视图
  XPath 查询
  OPENXML
  OLE DB 和 ADO 访问
  HTTP 访问
  Microsoft® SQL Server™ 2000 为通过 HTTP 访问数据提供了三种方法:
  URL 处的 SQL 语句
  SQL 语句和存储过程可以直接从 URL 处执行。这允许特别迅速地访问数据库中的数据。
  模板
  模板是包含一个或多个嵌入式 SQL 语句的有效 XML 文档。跟 SQL 语句一样,模板可以
在 URL 处或在文件中指定。模板允许使用 URL 检索 SQL 数据而不向查询者暴露数据库的结
构;查询者只能知道模板名称。这省却了在 URL 处输入很长的 SQL 语句的麻烦。SQL
  SELECT 语句和实体引用。
  存储过程的执行。
  参数传递和默认参数的指定。
  XPath 查询。
  HTML 事件后集成
  HTML 表单输入变量可以作为 URL 指定模板中的参数通过程序传递。可扩展样式表语言
(XSL) 样式表可用来处理客户端或 Web 服务器访问机制的输出。
  使用 HTTP 访问时可用的选项
  HTTP 访问方法支持以下选项:
  contenttype
  该关键字指定返回文档的内容类型。text/XML 是默认的文档内容类型。
  xsl
  该选项允许使用 XSL 文件处理查询结果。
  安全
  安全基于每个虚拟根目录设置,权限也在 SQL Server 上设置。ISAPI 动态链接库
  匿名访问
  直接在虚拟根上设置 Microsoft Windows® 或 SQL Server 登录/密码并为所有用户
  基本身份验证
  使用该选项时,清晰的文本 SQL Server 登录/密码要通过网络传递,因此该选项要结合
  集成安全
  使用 Windows 访问控制列表 (ACL)。
  用于以 XML 格式检索结果的新的 SELECT 语句选项 (FOR XML)
  您可以对已有关系数据库执行 SQL 查询并以 XML 格式而不是标准的行集格式返回结果
。这些查询可以直接执行,也可以从存储过程中执行。要检索 XML 结果,请使用 SELECT 语
句的 FOR XML 字句并指定 RAW、AUTO 或 EXPLICIT 等 XML 模式。
  XML 模式
  指定的 XML 模式决定了返回 XML 文档的形状。您可以指定以下 XML 模式:
  RAW
  RAW 模式获取查询结果并将结果集中的每一行转化为一个 XML 元素,并使用一个常规标
  AUTO
  AUTO 模式以简单的嵌套 XML 树返回查询结果。FROM 语句中至少有一列出现在 SELECT
语句中的表都被表示为 XML 元素。SELECT 语句中列出的列被映射为相应的元素属性。列也可
以映射为子元素。结果集中元素的嵌套或者层次由 SELECT 语句中指定列所标识的表顺序决定
。最左边的表将成为最顶层元素。次左边的表(由 SELECT 语句中的列标识)将嵌套在顶层元
  EXPLICIT
  在 EXPLICIT 模式下,您可以显式地定义结果 XML 树的形状。使用该模式要求以特殊方
式书写查询,有关所需嵌套的附加信息也作为查询的一部分显式指定。
  下图(图 1)显示了在 URL 中使用虚拟路径和 SQL 串以 AUTO 模式输出的结果。
  
  图 1 在 URL 中使用虚拟路径和 SQL 串以 AUTO 模式输出的结果示例
  使用 XML 模式时可用的选项
  XML 模式支持以下选项:
  XMLDATA
  该选项随 XML 文档返回文档架构。
  BINARY base64
  在查询中指定该选项可以返回 base64 编码格式的二进制数据。在 RAW 和 EXPLICIT 模
  ELEMENTS
  如果指定了该选项,列将以子元素形式返回,如下图(图 2)所示。否则,列将被映射为
XML 属性。该选项只支持在 AUTO 模式下使用。
  
  图 2 使用元素选项的输出示例
  XML 视图
  Microsoft® SQL Server™ 2000 引入了几个 XML-数据架构语言注释以便提供
数据库的 XML 视图。您可以在 XML-数据架构下使用这些注释来指定 XML-到-关系的双向映
射。这包括 XML-数据架构中元素和属性到数据库中表和列的映射,以及反向的映射。默认情
况下,注释架构中元素名映射于指定数据库中相同名称的表(视图),而属性映射于相同名称
  XPath 查询
  SQL Server 2000 支持 XPath 语言的一个子集,使用它和前面讲述的 XML 视图技术可
  OPENXML
  OPENXML 是一个 Transact-SQL 关键字,可以在内存中的 XML 文档内提供关系/行集视图
。OPENXML 是类似于表或视图的行集提供者。OPENXML 通过将数据从 XML 文档传入关系表而
提供了在 Transact-SQL 上下文中访问 XML 数据的机制。因此,OPENXML 允许您管理 XML 文
  OPENXML 可以用在 SELECT、INSERT、UPDATE 和 DELETE 等语句中。您可以指定
  XML 文档可以作为文本参数(char、nchar、varchar、nvarchar、text、ntext)传递给
存储过程。OPENXML 语句可与其他 Transact-SQL 语句一起使用来提供 XML 数据的行集视图
,因此执行插入、更新、删除和联接等关系操作时可以将 XML 文档作为数据源。这可以用来
  OLE DB 和 ADO 访问
  SQLOLEDB 已为 XML 和 Xpath 做了扩展。添加了一个新的 ICommandStream 接口用来向
OLE DB 传递需要处理的模板。另外,OLE-DB 提供程序的属性集也得到扩展,允许支持
IStream 的对象规范返回 XML 结果以及支持使用通过映射架构定义的 XML 视图进行 XPath
查询。流对象是在 ADO 2.5 中引入的,现在可以与新引入的语言分支一起用来向数据库发送
XPath 查询和从数据库接收 XML 结果。
  Oracle 比较分析
  SQL Server 2000 中的 XML 功能与 Oracle 中的功能类似。其主要差别在于 Oracle 建
立了一个常规的 XML 框架,而 Microsoft 在 SQL Server 2000 内建立了特殊的 XML 支持。
SQL Server 2000 支持通过简单的“即插即用”公开机制(XML 视图)在松散结合的商业系统
间提供映射。例如,它直接包含了对检索 (FOR XML) 和存储 (OPENXML) XML 数据的支持。而
Oracle 的 XML 技术即使执行简单的 XML 任务也需要复杂的编程工作。与 Oracle 的解决方
案不同,SQL Server 2000 为生成不同格式的 XML 文档提供了内在支持,而不必进行 XSL 转
  功能列表   
  SQL Server 2000 和 Oracle XML 功能比较
  尽管 Oracle 提供了一个常规 XML 框架,但您必须编写自定义程序才能使用其大部分
XML 功能。Oracle 提供了可被扩展以识别 XML 标记的 XML 文本搜索功能。
  本文将比较以下 SQL Server 2000 和 Oracle XML 功能。
  XML 视图
  SQL Server 2000 包括为关系数据提供 XML 视图的技术。而 Oracle 目前必须编写自定
  对数据库的内在扩展
  数据库中的集成功能与外部实现的功能相比可以提供更高的性能。建立 SQL Server
2000 内在 XML 功能的决定考虑了这些性能因素。Oracle 不带内在 XML 支持。
  检索动态 XML 格式
  Oracle 查询产生类似于以元素为中心的 RAW 格式的固定 XML 格式。要得到更有用的
格式,编程人员必须编写 XSL 转换或者 Java 代码。SQL Server 2000 不仅提供类似于 RAW
的模型,而且允许直接生成更“有价值”的 XML(使用 XML 视图和 FOR XML AUTO 及
EXPLICIT 模式)。此外,SQL Server 2000 为返回 XML 流格式的查询结果提供了一个流接口
  XML 更新
  Oracle 和 SQL Server 2000(带 Web 发行版)均支持批量装载。SQL Server 具有通过
XML 在服务器上提供行集的 OPENXML 以及使用 XML 语法提供更新的更新程序(Web 发行版
)。Oracle 具有执行类似功能的 Java 包。
  Oracle XSQL 模板与 SQL Server 2000 XML 模板
  Oracle 使用 XML SQL Utility for Java(用于将数据编排为 XML 格式)和 XSQL
Servlet(用于 URL 访问)来执行模板文件。SQL Server 2000 通过提供检索 XML 数据的内
在支持 (FOR XML) 为执行模板文件提供了集成度更高的解决方案。Oracle 的 XSQL 模板文
件只可以通过 XSQL Servlet 执行。要以其他任何方式执行 Oracle 模板,需要自定义 Java
编程。SQL Server 2000 模板既可以从 URL 执行,也可以从 ADO 程序执行。
  XPath 查询
  Oracle 带有一个如何向 SQL 映射 Xpath 子集的 alpha 级示范。SQL Server 2000 含
  全文检索和索引
  SQL Server 2000 为 OPENXML 提供了溢出列语法,可以用来从文档提取索引信息。
Oracle 为从文档提取数据建立索引提供了类似的方法。Oracle 含有一个按层次执行的文本
检索组件(WITHIN 子句)。虽然 Oracle 不能执行关联,但它支持多级嵌套查询。SQL
Server 2000 中的全文检索系统目前不提供层级索引和以纯文本格式搜索 XML。它不包含用来
  XML 流
  SQL Server 2000 提供了行集语法以及来自 ADO 的 XML 流接口。Oracle 只支持行集语
  可伸缩性和性能
  SQL Server 2000 可以使用 OPENXML 和 FOR XML 查询将部分负荷从中间层推至服务器
  虽然很难比较两个产品的性能和可伸缩性,但 SQL Server 由于能够直接通过查询生成
XML 而不必使用 XSLT 或 Java 程序进行转换而具有一定优势。
  对象视图
  Oracle 具有对象关系支持并使用这一功能为数据库中存储的数据提供 XML 对象视图。
  XML 分析程序、架构处理器和 XML 开发组件
  Oracle 拥有针对不同语言的 Transviewer bean、架构处理器和 XML 分析程序。这些功
能与数据库没有关系。MSXML 和第三方实用工具提供相同的功能。
  XML 类生成器
  跟 Oracle Transviewer bean 和 XML 分析程序一样,该功能与数据库技术没有关系。
  结论
  Microsoft SQL Server 2000 提供了专门为 Web 和数据库开发人员设计的 XML 功能。
Web 开发人员不必学习数据库编程即可以使用 SQL Server 2000 XML 功能,这是因为 SQL
Server 2000 支持标准的 XML 构造(比如 Xpath),允许开发人员与数据库进行交互。与之
类似,数据库开发人员也不必学习 XML 编程即可以使用 FOR XML 子句获得 XML 查询结果或
使用 OPENXML 操纵 XML 数据。最后,SQL Server 2000 为定义企业对企业事务的架构映射提
  本文档所包含的信息代表了在发布之日,Microsoft Corporation 对所讨论问题的当前看
法。因为 Microsoft 必须顺应不断变化的市场条件,故该文档不应理解为 Microsoft 一方
的承诺,Microsoft 不保证所给信息在发布之日以后的准确性。
  本文档仅供参考。在本文档中,MICROSOFT 不做任何明示或暗示的保证。
  用户必须遵守所有适用的版权法。在不对版权法所规定的权利加以限制的情况下,如未得
到 Microsoft 公司明确的书面许可,不得出于任何目的、以任何形式或手段(电子的、机械
的、影印、录制等等)复制、传播本文的任何部分,也不得将其存储或引入到检索系统中。
  Microsoft 可能拥有本文档主题涉及到的专利、专利使用、商标、版权或其它知识产权。
除非在 Microsoft 书面许可协议中明确提到,否则购买本文档并不向您提供其中的任何专利
、版权或其他知识产权。



Copyright © 2004 wanxu.com All Rights Reserved