XML 架构定义语言(XSD)验证在针对使用xml数据类型的SQL列时存在一些限制。 下表提供了有关修改 XSD 架构的这些限制和准则的详细信息,以便它可以与 SQL Server 配合使用。 本节中的主题提供有关使用它们的特定限制和指南的其他信息。
| 条目 | 限度 |
|---|---|
| minOccurs 和 maxOccurs | minOccurs 和 maxOccurs 属性的值必须适合 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> 值 | SQL Server 仅支持那些第二个组件不包括xs:time和xs:dateTime的简单类型达到毫秒精度,对于简单类型xs:time和xs:dateTime则支持100纳秒精度。 SQL Server 对所有识别的 XSD 简单类型枚举施加限制。SQL Server 不支持在 xsd:simpleType> 声明中使用“NaN”值<。 有关详细信息,请参阅xsd:simpleType> 声明的值<。 |
| xsi:schemaLocation 和 xsi:noNamespaceSchemaLocation | 当 XML 实例数据被插入到数据类型为 xml 的列或变量中时,SQL Server 将忽略这些属性。 |
| xs:QName | SQL Server 不支持派生自使用 XML 架构限制元素 的 xs:QName 的类型。 SQL Server 不支持将 xs:QName 用作成员元素的联合类型。 有关详细信息,请参阅 xs:QName 类型。 |
| 将成员添加到现有替换组 | 不能将成员添加到 XML 架构集合中的现有替换组。 XML 架构中的替换组受到限制,即头元素及其所有成员元素必须在同一 {CREATE | ALTER} XML SCHEMA COLLECTION 语句中定义。 |
| 规范形式和模式限制 | 值的规范表示形式不能违反其类型的模式限制。 有关详细信息,请参阅 规范形式和模式限制。 |
| 枚举特性 | SQL Server 不支持具有模式限制或违反这些限制的枚举类型的 XML 架构。 |
| 分面长度 |
长度、minLength 和 maxLength 限定符存储为long类型。 此类型为 32 位类型。 因此,这些值的可接受值范围为 2^31。 |
| ID 属性 | 每个 XML 架构组件都可以具有 ID 属性。 SQL Server 对 ID 类型的 xsd:attribute> 声明强制实施唯一性<,但不存储这些值。 唯一性强制实施的范围是 {CREATE | ALTER} XML SCHEMA COLLECTION 语句。 |
| ID 类型 | SQL Server 不支持 xs:ID、 xs:IDREF 或 xs:IDREFS 类型的元素。 架构不能声明此类型的元素,或者通过限制或扩展从此类型派生的元素。 |
| 本地命名空间 | 必须为 xsd:any> 元素显式指定<本地命名空间。 SQL Server 拒绝使用空字符串(“”)作为命名空间属性的值的架构。 相反,SQL Server 需要显式使用“##local”来指示未限定的元素或属性作为通配符的实例。 |
| 混合类型和简单内容 | SQL Server 不支持将混合类型限制为简单内容。 有关详细信息,请参阅 混合类型和简单内容。 |
| 标记类型 | SQL Server 不支持 NOTATION 类型。 |
| 内存不足状态 | 在使用大型 XML 架构集合时,可能会出现内存不足的情况。 有关此问题的解决方案,请参阅 大型 XML 架构集合和内存不足条件。 |
| 重复值 | SQL Server 拒绝块或最终属性具有重复值(如“限制限制”和“扩展扩展”)的架构。 |
| 架构组件标识符 | SQL Server 将架构组件的标识符限制为最大长度为 1000 个 Unicode 字符。 此外,不支持标识符中的代理字符对。 |
| 时区信息 | 在 SQL Server 2008 及更高版本中,xs:date、xs:time 和 xs:dateTime 的值完全支持用于 XML 架构验证的时区信息。 使用 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)在内部表示。 |
本节中
| 主题 | DESCRIPTION |
|---|---|
| 规范形式和模式限制 | 阐释规范形式和模式限制。 |
| 通配符组件和内容验证 | 描述在 XML 架构集合中使用通配符字符、松散验证和 anyType 元素的限制。 |
| <xsd:redefine> 元素 | 说明使用 <xsd:redefine> 元素的限制,并介绍了解决方法。 |
| xs:QName 类型 | 描述有关 xs:QName 类型的限制。 |
| <xsd:simpleType> 声明的值 | 描述应用于 <xsd:simpleType> 声明的限制。 |
| 枚举方面 | 描述有关枚举特征的限制。 |
| 混合类型和简单内容 | 描述将混合类型限制为简单内容的限制。 |
| 大型 XML 架构集合和内存不足条件 | 为有时在大型架构集合中发生的内存不足情况提供解决方案。 |
| 非确定性内容模型 | 描述有关非确定性内容模型的限制。 |
另请参阅
XML 数据 (SQL Server)
类型化的 XML 与非类型化的 XML 的比较
授予对 XML 架构集合的权限
唯一粒子归属约束
XML 架构集合 (SQL Server)