SQLXML 4.0 中的 xml 数据类型支持

适用于:SQL Server Azure SQL 数据库

从 SQL Server 2005(9.x)开始,SQL Server 支持使用 xml 数据类型的 XML 类型数据。 本主题提供有关 SQLXML 4.0 如何识别 xml 数据类型的实例并实现对其的支持的信息。

使用 xml 数据类型

若要详细了解如何使用实现 xml 数据类型列的 SQL 表,提供了以下示例:

任务 示例 主题
如何在 XML 视图中映射和包含 xml “将 XML 元素映射到 XML 数据类型列” XSD 元素和属性到表和列的默认映射 (SQLXML 4.0)
如何使用 updategram 将数据插入 xml “将数据插入到 XML 数据类型列” 使用 XML Updategram 插入数据 (SQLXML 4.0)
将 XML 数据大容量加载到 xml 列中 “在 xml 数据类型列中执行大容量加载” XML 大容量加载示例 (SQLXML 4.0)

准则和限制

  • <xsd:any> 不能映射到包含 xml 数据类型的列。 SQLXML 对此方案的支持通过 sql:overflow-field 批注提供。 另一种解决方法是将 xml 数据类型字段映射为 xsd:anyType元素。 上表中引用的“将 XML 元素映射到 XML 数据类型列”示例介绍了这种解决办法。

  • 不支持 XPath 查询 xml 数据类型列的内容

  • 在不支持的批注中使用 xml 数据类型列(例如 sql:relationshipsql:key-fields)或允许将导致实现 SQLXML 4.0 的中间层组件不会捕获 SQL Server 错误。 其原因在于 SQLXML 不要求 SQL 类型信息。 这类似于其他数据类型(如 BLOB 和二进制类型)的 SQLXML 的行为。

  • 仅 XSD 架构支持映射 xml 列。 XDR 架构不支持映射 xml 列。

  • SQLXML 4.0 依赖于 SQL Server 中提供的 XML 分析支持。 xml 列可以映射为类型化的 XML 或非类型化的 XML。 在任一种情况下,SQLXML 4.0 都不验证输入 XML。 如果输入 XML 无效或格式正确,SQL Server 会将其报告给 SQLXML,并将服务器返回的任何相关错误信息传播给用户。

  • SQLXML 4.0 依赖于对 SQL Server 中提供的 DTD 的有限支持。 SQL Server 允许 xml 数据类型数据中的内部 DTD,该数据可用于提供默认值,并将实体引用替换为扩展的内容。 SQLXML 将 XML 数据“按原样”(包括内部 DTD)传递到服务器。 可以通过使用第三方工具将 DTD 转换为 XML 架构 (XSD),然后使用内联 XSD 架构将数据加载到数据库中。

  • SQLXML 4.0 不会根据 SQL Server 的行为保留 XML 声明处理指令(例如)。 相反,XML 声明被视为 SQL Server XML 分析器指令,并且其属性(版本、编码和独立)在将数据转换为 xml 数据类型后丢失。 XML 数据在内部存储为 UCS-2。 将保留 XML 实例中的所有其他处理指令;在 xml 列中允许它们,可由 SQLXML 支持。

另请参阅

XML 数据 (SQL Server)