Utilisation de collections de schémas XML sur le serveur — Recommandations et limitations

La validation XSD (XML Schema Definition Language) des colonnes SQL utilisant le type de données xml fait l'objet de certaines limitations, lesquelles sont exposées dans le tableau suivant. Les recommandations à suivre pour modifier un schéma XSD afin qu'il soit compatible avec SQL Server y sont abordées. Les rubriques de cette section fournissent des informations supplémentaires concernant les limitations spécifiques, ainsi qu'une assistance pour leur utilisation.

Option

Limitation

minOccurs et maxOccurs

Les valeurs des attributs minOccurs et maxOccurs doivent tenir dans des entiers à 4 octets. Les schémas non conformes sont rejetés par le serveur.

<xsd:choice>

SQL Server refuse les schémas comportant une particule <xsd:choice> sans enfant, sauf si cette particule est définie avec une valeur d'attribut minOccurs de zéro.

<xsd:include>

SQL Server ne prend actuellement pas en charge cet élément. Les schémas XML incluant cet élément seront rejetés par le serveur.

En guise de solution, les schémas XML comportant la directive <xsd:include> peuvent être prétraités de façon à copier et à fusionner le contenu de tous les schémas inclus en un seul et unique schéma à télécharger vers le serveur. Pour plus d'informations, consultez Outil du préprocesseur pour les schémas XML.

<xsd:key>, <xsd:keyref> et <xsd:unique>

Actuellement, SQL Server ne prend pas en charge ces contraintes basées sur XSD pour appliquer l'unicité ou établir des clés ou des références de clés. Les schémas XML contenant ces éléments ne peuvent pas être inscrits.

<xsd:redefine>

SQL Server ne prend pas en charge cet élément. Pour plus d'informations sur une autre méthode pour mettre à jour des schémas, consultez Élément <xsd:redefine>.

Valeurs <xsd:simpleType>

SQL Server prend uniquement en charge la précision à la milliseconde pour les types simples comportant un composant seconde autre que xs:time et xs:dateTime, et une précision de cent nanosecondes pour xs:time et xs:dateTime. SQL Server impose des limites à toutes les énumérations de types simples XSD reconnus.

SQL Server ne prend pas en charge l'utilisation de la valeur « NaN » dans les déclarations <xsd:simpleType>.

Pour plus d'informations, consultez Valeurs pour les déclarations <xsd:simpleType>.

xsi:schemaLocation et xsi:noNamespaceSchemaLocation

SQL Server ignore ces attributs s'ils sont présents dans les données d'instance XML insérées dans une colonne ou une variable de type de données xml.

xs:QName

SQL Server ne prend pas en charge les types dérivés de xs:QName utilisant un élément de restriction de schéma XML.

SQL Server ne prend pas en charge les types union avec xs:QName en tant qu'élément de membre.

Pour plus d'informations, consultez Le type xs:QName.

Ajout de membres à un groupe de substitution existant

Vous ne pouvez pas ajouter des membres à un groupe de substitution existant dans une collection de schémas XML. Un groupe de substitution dans un schéma XML est restreint en cela que l'élément de tête et tous les éléments membres doivent être définis dans la même instruction {CREATE | ALTER} XML SCHEMA COLLECTION.

Formes canoniques et restrictions de modèle

La représentation canonique d'une valeur ne peut enfreindre la restriction de modèle pour son type. Pour plus d'informations, consultez Formes canoniques et restrictions de modèle.

Facettes d'énumération

SQL Server ne prend pas en charge les schémas XML avec des types présentant des facettes de modèles ou des énumérations enfreignant ces facettes.

Longueur de facette

Les facettes length, minLength et maxLength sont stockées sous la forme d'un type long, type codé sur 32 bits. Par conséquent, la plage de valeurs acceptables pour ces valeurs est 2^31.

Attribut d'ID

Chaque composant de schéma XML peut avoir un attribut d'ID. SQL Server applique l'unicité des déclarations <xsd:attribute> de type ID, mais il ne stocke pas ces valeurs. L'étendue pour l'application de l'unicité est l'instruction {CREATE | ALTER} XML SCHEMA COLLECTION.

Type ID

SQL Server ne prend pas en charge les éléments de type xs:ID, xs:IDREF ou xs:IDREFS. Un schéma peut ne pas déclarer les éléments de ce type, ou les éléments dérivés par restriction ou par extension de ce type.

Espace de noms local

L'espace de noms local doit être spécifié explicitement pour l'élément <xsd:any>. SQL Server rejette les schémas utilisant une chaîne vide ("") en tant que valeur pour l'attribut d'espace de noms. SQL Server nécessite en lieu et place l'utilisation explicite de « ##local » pour indiquer qu'un élément ou un attribut non qualifié sera utilisé en tant qu'instance du caractère générique.

Type mixte et contenu simple

SQL Server ne prend pas en charge la restriction d'un type mixte à du contenu simple. Pour plus d'informations, consultez Type mixte et contenu simple.

Type NOTATION

SQL Server n'accepte pas les valeurs de type NOTATION.

Conditions de mémoire insuffisante

La manipulation de collections de schémas XML volumineuses peut entraîner des conditions de mémoire insuffisante. Pour les solutions à ce problème, consultez Collections de schémas XML volumineuses et conditions de mémoire insuffisante.

Valeurs répétées

SQL Server rejette les schémas où l'attribut block ou final comporte des valeurs répétées comme « restriction restriction » et « extension extension ».

Identificateurs de composant de schéma

SQL Server limite les identificateurs de composant de schéma à une longueur maximale de 1 000 caractères Unicode. De plus, l'emploi de paires de caractères de substitution au sein des identificateurs n'est pas pris en charge.

Informations de fuseau horaire

Dans SQL Server 2008, les informations de fuseau horaire sont totalement prises en charge pour les valeurs xs:date, xs:time et xs:dateTime pour la validation de schéma XML. Avec le mode de compatibilité descendante de SQL Server 2005, les informations de fuseau horaire sont toujours normalisées en Temps universel coordonné (heure de Greenwich). Pour les éléments de type dateTime, le serveur convertit l'heure fournie à l'heure GMT en se basant sur la valeur de décalage horaire (« -05:00 ») et en retournant l'heure GMT correspondante.

Types union

SQL Server ne prend pas en charge les restrictions des types union.

Décimales de précision de variable

SQL Server ne prend pas en charge les décimales de précision de variable. Le type xs:decimal représente des nombres de décimales de précision arbitraire. Les processeurs XML conformes minimaux doivent prendre en charge les nombres décimaux avec un minimum de totalDigits=18. SQL Server prend en charge totalDigits=38, mais limite les chiffres fractionnels à 10. Toutes les valeurs instanciées de xs:decimal sont représentées en interne par le serveur au moyen du type numeric SQL (38, 10).

Dans cette section

Rubrique

Description

Formes canoniques et restrictions de modèle

Explique les formes canoniques et restrictions de modèle.

Composants génériques et validation de contenu

Décrit les limitations liées à l'utilisation des caractères génériques, de la validation de type lax et des éléments anyType avec des collections de schémas XML.

Élément <xsd:redefine>

Explique la limitation liée à l'utilisation de l'élément <xsd:redefine> et décrit une solution de contournement.

Le type xs:QName

Décrit la limitation relative au type xs:QName.

Valeurs pour les déclarations <xsd:simpleType>

Décrit les restrictions appliquées aux déclarations <xsd:simpleType>.

Facettes d'énumération

Décrit la limitation relative aux facettes d'énumération.

Type mixte et contenu simple

Décrit la limitation relative à la restriction d'un type mixte à un contenu simple.

Collections de schémas XML volumineuses et conditions de mémoire insuffisante

Fournit des solutions pour la condition de mémoire insuffisante qui se produit parfois avec les grandes collections de schémas.

Modèles de contenu non déterministes

Décrit les limitations relatives aux modèles de contenu non déterministes.