在服务器上使用 XML 架构集合的要求和限制

XML 架构定义语言 (XSD) 验证对使用 xml 数据类型的 SQL 列具有某些限制。 下表提供有关这些限制的详细信息,还提供了修改 XSD 架构的准则以使它可以与 SQL Server一起使用。 本部分中的主题提供有关使用这些特定限制和准则的其他信息。

Item 限制
minOccursmaxOccurs minOccursmaxOccurs 属性的值必须符合 4 字节整数。 服务器拒绝不符合的架构。
<xsd:choice> SQL Server拒绝具有<没有子级的 xsd:choice> 粒子的架构,除非该粒子定义了 minOccurs 属性值为零。
<xsd:include> 当前, SQL Server 不支持此元素。 服务器拒绝包含此元素的 XML 架构。

作为一种解决方案,可以预处理包含 <xsd:include> 指令的 XML 架构,以将任何包含的架构的内容复制并合并到单个架构中,以便上传到服务器。 有关详细信息,请参阅 预处理架构以便合并包括的架构
<xsd:key><xsd:keyref><xsd:unique> 当前, SQL Server 不支持这些用于强制唯一性或建立键和键引用的基于 XSD 的约束。 无法注册包含这些元素的 XML 架构。
<xsd:redefine> SQL Server 不支持此元素。 有关更新架构的其他方法的信息,请参阅 The <xsd:redefine> Element
<xsd:simpleType> SQL Server仅支持具有 除 和 xs:dateTime以外的xs:time第二个组件的简单类型的毫秒精度,以及 xs:timexs:dateTime的 100 纳秒精度。 SQL Server 对所有已识别的 XSD 简单类型枚举具有限制。

SQL Server不支持在 <xsd:simpleType> 声明中使用“NaN”值。

有关详细信息,请参阅xsd:simpleType> 声明的值<
xsi:schemaLocationxsi:noNamespaceSchemaLocation 如果插入到数据类型的列或变量xml中的 XML 实例数据中存在这些属性,SQL Server将忽略这些属性。
xs:QName SQL Server 不支持从 xs:QName 派生的使用 XML 架构限制元素的类型。

SQL Server 不支持将 xs:QName 作为成员元素的联合类型。

有关详细信息,请参阅 The xs:QName Type
将成员添加到现有替换组 无法将成员添加到 XML 架构集合中的现有替换组。 XML 架构中的替换组有以下限制:头元素和所有其成员元素必须在相同的 {CREATE | ALTER} XML SCHEMA COLLECTION 语句中定义。
规范格式和模式限制 值的规范表示形式不能违反其类型的模式限制。 有关详细信息,请参阅 Canonical Forms and Pattern Restrictions
枚举方面 SQL Server 不支持包含以下类型的 XML 架构:具有模式方面或违反这些方面的枚举的类型。
方面长度 lengthminLengthmaxLength facet 存储为类型long。 此类型为 32 位类型。 因此,这些值的可接受值范围为 2^31。
ID 属性 每个 XML 架构组件可在其上具有 ID 属性。 SQL Server对 <ID 类型的 xsd:attribute> 声明强制执行唯一性,但不存储这些值。 唯一性的强制的作用域是 {CREATE | ALTER} XML SCHEMA COLLECTION 语句。
ID 类型 SQL Server 不支持类型为 xs:IDxs:IDREFxs:IDREFS的元素。 架构不会声明这种类型的元素或者从这种类型的限制或扩展派生的元素。
本地命名空间 必须为 xsd:any> 元素显式指定<本地命名空间。 SQL Server 拒绝使用空字符串 ("") 作为命名空间属性的值的架构。 SQL Server 而是要求显式使用“##local”以指示作为通配符实例的未限定元素或属性。
混合类型和简单内容 SQL Server 不支持将混合类型限制为简单内容。 有关详细信息,请参阅 Mixed Type and Simple Content
NOTATION 类型 SQL Server 不支持 NOTATION 类型。
内存不足的情况 在使用大型 XML 架构集合时,可能会出现内存不足的情况。 有关此问题的解决方案,请参阅 大型 XML 架构集合和内存不足的情况
重复的值 SQL Server 拒绝其中的 block 或 final 属性具有重复值(如“restriction restriction”和“extension extension”)的架构。
架构组件标识符 SQL Server 将架构组件的标识符限于最大长度为 1000 个 Unicode 字符。 另外,不支持在标识符中使用代理项字符对。
时区信息 在 SQL Server 2008 及更高版本中,XML 架构验证的 xs:datexs:timexs:dateTime 值完全支持时区信息。 使用 SQL Server 2005 向后兼容模式时,时区信息始终规范化为协调世界时 (格林威治标准时间) 。 对于 dateTime 类型的元素,服务器将通过使用偏移量值(“-05:00”)和返回相应的 GMT 时间转换提供给 GMT 的时间。
联合类型 SQL Server 不支持联合类型的限制。
可变精度小数 SQL Server 不支持可变精度小数。 xs:decimal 类型表示任意精度十进制数字。 最小符合 XML 处理器必须支持最小值为 totalDigits=18的十进制数字。 SQL Server 支持 totalDigits=38, ,但将小数位数限制为 10。 所有 xs:decimal 实例化的值均由服务器通过使用 SQL 类型数值 (38, 10) 在内部表示。

本节内容

主题 说明
规范格式和模式限制 说明规范格式和模式限制。
通配符组成部分和内容验证 介绍了使用通配符、宽松验证和任何带有 XML 架构集合的类型元素的限制。
<xsd:redefine> 元素 说明使用 <xsd:redefine> 元素的限制,并介绍了解决方法。
xs:QName 类型 介绍与 xs:QName 类型有关的限制。
<xsd:simpleType> 声明的值 描述应用于 <xsd:simpleType> 声明的限制。
枚举分面 介绍与枚举方面有关的限制。
混合类型和简单内容 介绍将混合类型限制为简单内容的限制。
大型 XML 架构集合和内存不足的情况 提供在大型架构集合有时发生内存不足时的解决方案。
不确定性内容模型 介绍与不确定性内容模型有关的限制。

另请参阅

XML 数据 (SQL Server)
类型化的 XML 与非类型化的 XML 的比较
授予对 XML 架构集合的权限
唯一粒子归因约束
XML 架构集合 (SQL Server)