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

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

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 不支持此元素。 有关更新架构的其他方法的信息,请参阅 <xsd:redefine> 元素
<xsd:simpleType> xs:timexs:dateTime 以外,SQL Server 对于带有秒组件的简单类型仅支持毫秒精度,对于 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 方面作为 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 拒绝使用空字符串 ("") 作为命名空间属性的值的架构, 而是要求显式使用“##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 (10.0.x) 和更高版本中,完全支持进行 XML 架构验证的 xs:datexs:timexs:dateTime 值的时区信息。 通过 SQL Server 2005 (9.x) 后向兼容模式,始终将时区信息规范化为协调世界时(格林尼治标准时间)。 对于 dateTime 类型的元素,服务器将通过使用偏移值(“-05:00”)和返回相应的 GMT 时间转换提供给 GMT 的时间。
联合类型 SQL Server 不支持联合类型的限制。
可变精度小数 SQL Server 不支持可变精度小数。 xs:decimal 类型表示任意精度十进制数字。 最小符合 XML 处理器必须支持最小值为 totalDigits=18的十进制数字。 SQL Server 支持 totalDigits=38,,但将小数位数限制为 10。 所有 xs:decimal 实例化的值均由服务器通过使用 SQL 类型数值 (38, 10) 在内部表示。

后续步骤

另请参阅