Prise en charge du type de données xml dans SQLXML 4.0

S’applique à :SQL ServerAzure SQL Database

À compter de SQL Server 2005 (9.x), SQL Server prend en charge les données typées XML à l’aide du type de données xml. Cette rubrique fournit des informations sur la façon dont SQLXML 4.0 reconnaît les instances du type de données xml et implémente leur prise en charge.

Utilisation des types de données xml

Pour en savoir plus sur l’utilisation des tables SQL qui implémentent des colonnes de type de données xml , les exemples suivants sont fournis :

Tâche Exemple Rubrique
Comment mapper et inclure une colonne xml dans une vue XML « Mappage d'un élément XML à une colonne de type de données XML » Mappage par défaut d'éléments et d'attributs XSD à des tables et des colonnes (SQLXML 4.0)
Comment insérer des données dans une colonne xml avec des codes de mise à jour « Insertion de données dans une colonne de type de données XML » Insertion de données à l'aide de codes de mise à jour (updategrams) XML (SQLXML 4.0)
Chargement en bloc de données XML dans une colonne xml « Chargement en masse dans les colonnes de type de données xml » Exemples de chargement en masse XML (SQLXML 4.0)

Instructions et limitations

  • <xsd:any> ne peut pas être mappé à une colonne, y compris un type de données xml . La prise en charge dans SQLXML pour ce scénario est fournie via l’annotation sql:overflow-field . Une autre solution de contournement consiste à mapper un champ de type de données xml en tant qu’élément de xsd:anyType. Cette solution est illustrée dans l'exemple de mappage d'un élément XML à une colonne de type de données XML, référencé dans le tableau ci-dessus.

  • La requête XPath dans le contenu des colonnes de type de données xml n’est pas prise en charge.

  • L’utilisation d’une colonne de type de données xml dans les annotations lorsqu’elle n’est pas prise en charge (par exemple, sql:relationship et sql:key-fields) ou autorisée entraîne des erreurs SQL Server qui ne seront pas interceptées par les composants de niveau intermédiaire implémentant SQLXML 4.0. Cela se produit, car SQLXML ne requiert pas d'informations de type SQL. Ce comportement est semblable à celui de SQLXML pour les autres types de données, par exemple les types BLOB et binaires.

  • Le mappage de colonnes xml est pris en charge uniquement pour les schémas XSD. Les schémas XDR ne prennent pas en charge le mappage de colonnes xml .

  • SQLXML 4.0 s’appuie sur la prise en charge de l’analyse XML fournie dans SQL Server. Une colonne xml peut être mappée en tant que XML typé ou XML non typé. Dans les deux cas, SQLXML 4.0 ne valide pas le code XML d'entrée. Si le code XML d’entrée n’est pas valide ou correctement formé, SQL Server le signale à SQLXML et propage toutes les informations d’erreur pertinentes retournées par le serveur à l’utilisateur.

  • SQLXML 4.0 s’appuie sur la prise en charge limitée des DTD fournies dans SQL Server. SQL Server autorise un DTD interne dans les données de type de données xml, qui peut être utilisé pour fournir des valeurs par défaut et remplacer les références d’entité par leur contenu développé. SQLXML passe les données XML « en l'état » (y compris la DTD interne) au serveur. Vous pouvez convertir les DTD en documents XSD (XML Schema Documents) à l'aide d'outils tiers, puis charger les données avec des schémas XSD insérés dans la base de données.

  • SQLXML 4.0 ne conserve pas les instructions de traitement des déclarations XML (par exemple, ) basées sur le comportement de SQL Server. Au lieu de cela, la déclaration XML est traitée comme une directive pour l’analyseur XML SQL Server, et ses attributs (version, encodage et autonome) sont perdus une fois les données converties en type de données xml. Les données XML sont stockées en interne au format UCS-2. Toutes les autres instructions de traitement dans le instance XML sont conservées ; elles sont autorisées dans la colonne xml et peuvent être prises en charge par SQLXML.

Voir aussi

Données XML (SQL Server)