SQLXML 4.0 中的 xml 数据类型支持

适用于:SQL ServerAzure SQL 数据库

从 2005 SQL Server (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 数据类型列”示例介绍了这种解决办法。

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

  • 在不支持 ((例如 sql:relationship 和 sql:key-fields)) 或允许的注释中使用 xml 数据类型列将导致SQL Server错误,而实现 SQLXML 4.0 的中间层组件不会捕获这些错误。 其原因在于 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 不保留 XML 声明处理指令 (,例如,) 基于SQL Server的行为。 相反,XML 声明被视为SQL Server XML 分析程序指令,其属性 (版本、编码和独立) 在数据转换为 xml 数据类型后丢失。 XML 数据在内部存储为 UCS-2。 保留 XML 实例中的所有其他处理指令;它们在 xml 列中是允许的,SQLXML 可以支持它们。

另请参阅

XML 数据 (SQL Server)