Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Comme décrit dans la rubrique, xml (Transact-SQL), SQL Server fournit un stockage natif de données XML via le xml type de données. Vous pouvez éventuellement associer des schémas XSD à une variable ou une colonne de xml type via une collection de schémas XML. La collection de schémas XML stocke les schémas XML importés et est ensuite utilisée pour effectuer les opérations suivantes :
Valider des instances XML
Tapez les données XML telles qu’elles sont stockées dans la base de données
Notez que la collection de schémas XML est une entité de métadonnées comme une table dans la base de données. Vous pouvez créer, modifier et supprimer ces derniers. Les schémas spécifiés dans une instruction CREATE XML SCHEMA COLLECTION (Transact-SQL) sont automatiquement importés dans l’objet de collection de schémas XML nouvellement créé. Vous pouvez importer des schémas ou des composants de schéma supplémentaires dans un objet de collection existant dans la base de données à l’aide de l’instruction ALTER XML SCHEMA COLLECTION (Transact-SQL).
Comme décrit dans la rubrique, Typé ou XML non typé, le code XML stocké dans une colonne ou une variable à laquelle un schéma est associé est appelé XML typé , car le schéma fournit les informations de type de données nécessaires pour les données d’instance. SQL Server utilise ces informations de type pour optimiser le stockage des données.
Le moteur de traitement des requêtes utilise également le schéma pour la vérification de type et pour optimiser les requêtes et la modification des données.
En outre, SQL Server utilise la collection de schémas XML associée, dans le cas d’un xmltype , pour valider l’instance XML. Si l’instance XML est conforme au schéma, la base de données permet à l’instance d’être stockée dans le système avec ses informations de type. Sinon, elle rejette l’instance.
Vous pouvez utiliser la fonction intrinsèque XML_SCHEMA_NAMESPACE pour récupérer la collection de schémas stockée dans la base de données. Pour plus d’informations, consultez Afficher une collection de schémas XML stockée.
Vous pouvez également utiliser la collection de schémas XML pour taper des variables, des paramètres et des colonnes XML.
DDL pour la gestion des collections de schémas
Vous pouvez créer des collections de schémas XML dans la base de données et les associer à des variables et des colonnes de xml type. Pour gérer les collections de schémas dans la base de données, SQL Server fournit les instructions DDL suivantes :
CREATE XML SCHEMA COLLECTION (Transact-SQL) Importe les composants de schéma dans une base de données.
ALTER XML SCHEMA COLLECTION (Transact-SQL) Modifie les composants de schéma dans une collection de schémas XML existante.
DROP XML SCHEMA COLLECTION (Transact-SQL) Supprime une collection de schémas XML complète et tous ses composants.
Pour utiliser une collection de schémas XML et les schémas qu’il contient, vous devez d’abord créer la collection et les schémas à l’aide de l’instruction CREATE XML SCHEMA COLLECTION. Une fois la collection de schémas créée, vous pouvez ensuite créer des variables et des colonnes de xml type et associer la collection de schémas à celles-ci. Notez qu’après la création d’une collection de schémas, différents composants de schéma sont stockés dans les métadonnées. Vous pouvez également utiliser ALTER XML SCHEMA COLLECTION pour ajouter d’autres composants aux schémas existants ou ajouter de nouveaux schémas à une collection existante.
Pour supprimer la collection de schémas, utilisez l’instruction DROP XML SCHEMA COLLECTION. Cela supprime tous les schémas contenus dans la collection et supprime l’objet de collection. Notez qu’avant de pouvoir supprimer une collection de schémas, les conditions décrites dans DROP XML SCHEMA COLLECTION (Transact-SQL)doivent être remplies.
Présentation des composants de schéma
Lorsque vous utilisez l’instruction CREATE XML SCHEMA COLLECTION, différents composants de schéma sont importés dans la base de données. Les composants de schéma incluent des éléments de schéma, des attributs et des définitions de type. Lorsque vous utilisez l’instruction DROP XML SCHEMA COLLECTION, vous supprimez la collection complète.
CREATE XML SCHEMA COLLECTION enregistre les composants de schéma dans différentes tables système.
Par exemple, considérez le schéma suivant :
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="uri:Cust_Orders2"
xmlns="uri:Cust_Orders2" >
<xsd:attribute name="SomeAttribute" type="xsd:int" />
<xsd:complexType name="SomeType" />
<xsd:complexType name="OrderType" >
<xsd:sequence>
<xsd:element name="OrderDate" type="xsd:date" />
<xsd:element name="RequiredDate" type="xsd:date" />
<xsd:element name="ShippedDate" type="xsd:date" />
</xsd:sequence>
<xsd:attribute name="OrderID" type="xsd:ID" />
<xsd:attribute name="CustomerID" />
<xsd:attribute name="EmployeeID" />
</xsd:complexType>
<xsd:complexType name="CustomerType" >
<xsd:sequence>
<xsd:element name="Order" type="OrderType"
maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="CustomerID" type="xsd:string" />
<xsd:attribute name="OrderIDList" type="xsd:IDREFS" />
</xsd:complexType>
<xsd:element name="Customer" type="CustomerType" />
</xsd:schema>
Le schéma précédent montre les différents types de composants qui peuvent être stockés dans la base de données. Ceux-ci incluent SomeAttribute, SomeType, OrderType, CustomerType, Customer, Order, CustomerID, OrderID, OrderDate, RequiredDate, et ShippedDate.
Catégories de composants
Les composants de schéma stockés dans la base de données se trouvent dans les catégories suivantes :
ÉLÉMENT
ATTRIBUT
TYPE (pour les types simples ou complexes)
ATTRIBUTEGROUP
MODELGROUP
Par exemple:
SomeAttribute est un composant ATTRIBUTE.
SomeType, OrderType et CustomerType sont des composants TYPE.
Le client est un composant ELEMENT.
Lorsque vous importez un schéma dans la base de données, SQL Server ne stocke pas le schéma lui-même. Au lieu de cela, SQL Server stocke les différents composants individuels. Autrement dit, la <balise de schéma> n’est pas stockée, seuls les composants qui sont définis dans celui-ci sont conservés. Tous les éléments de schéma ne sont pas conservés. Si la <balise Schema> contient des attributs qui spécifient le comportement par défaut de ses composants, ces attributs sont déplacés vers les composants du schéma qu’il contient pendant le processus d’importation, comme indiqué dans le tableau suivant.
| Nom de l’attribut | Comportement |
|---|---|
| attributeFormDefault | L'attribut 'form' est appliqué à toutes les déclarations d'attributs dans le schéma où il n'est pas déjà présent, et la valeur est définie par celle de l'attribut attributeFormDefault. |
| elementFormDefault | L'attribut form est appliqué à toutes les déclarations d'élément dans le schéma, là où il n'est pas encore présent, et sa valeur est définie selon celle de l'attribut elementFormDefault. |
| blocParDéfaut | L'attribut block est appliqué à toutes les déclarations d'élément et définitions de type où il n'est pas déjà présent, et sa valeur est définie sur celle de l'attribut blockDefault. |
| finalDefault | Attribut final appliqué à toutes les déclarations d’élément et définitions de type où il n’est pas déjà présent et la valeur est définie sur la valeur de l’attribut finalDefault . |
| targetNamespace | Les informations sur les composants appartenant à l’espace de noms cible sont stockées dans les métadonnées. |
Autorisations sur une collection de schémas XML
Vous devez disposer des autorisations nécessaires pour effectuer les opérations suivantes :
Créer/charger la collection de schémas XML
Modifier la collection de schémas XML
Supprimer la collection de schémas XML
Utilisez la collection de schémas XML pour définir les colonnes, variables et paramètres de type
xml, ou pour l'utiliser dans les contraintes de table ou de colonne.
Le modèle de sécurité SQL Server autorise l’autorisation CONTROL sur chaque objet. Le bénéficiaire de cette autorisation obtient toutes les autres autorisations sur l’objet. Le propriétaire de l’objet dispose également de toutes les autorisations sur l’objet.
Le propriétaire et le bénéficiaire de l’autorisation CONTROL sur un objet peuvent accorder n’importe quelle autorisation sur l’objet. Un utilisateur qui n’est pas le propriétaire et qui n’a pas d’autorisation CONTROL peut toujours accorder l’autorisation sur un objet lorsque WITH GRANT OPTION est spécifié. Par exemple, supposons que l’utilisateur A dispose de l’autorisation REFERENCES sur la collection de schémas XML S, via WITH GRANT OPTION, mais d'aucune autre autorisation sur S. L’utilisateur A peut accorder à l’utilisateur B l’autorisation REFERENCES sur la collection de schémas S.
Le modèle de sécurité permet également de créer et d’utiliser des collections de schémas XML ou de transférer la propriété d’un utilisateur à un autre. Les rubriques suivantes décrivent les autorisations de collection de schémas XML.
Accorder des autorisations sur une collection de schémas XML
Cette rubrique explique comment accorder des autorisations pour créer une collection de schémas XML et comment accorder des autorisations sur un objet de collection de schémas XML.
Révoquer des autorisations sur une collection de schémas XML
Cette rubrique explique comment révoquer des autorisations pour empêcher la création d’une collection de schémas XML et comment révoquer des autorisations sur un objet de collection de schémas XML.
Refuser des autorisations sur une collection de schémas XML
Cette rubrique explique comment refuser des autorisations pour créer une collection de schémas XML et refuser l’autorisation sur un objet de collection de schémas XML.
Obtention d’informations sur les schémas XML et les collections de schémas
Les collections de schémas XML sont énumérées dans l’affichage catalogue, sys.xml_schema_collections. La collection de schémas XML « sys » est définie par le système. Il contient les espaces de noms prédéfinis qui peuvent être utilisés dans toutes les collections de schémas XML définies par l’utilisateur sans avoir à les charger explicitement. Cette liste contient les espaces de noms pour xml, xs, xsi, fn et xdt. Deux autres vues de catalogue sont sys.xml_schema_namespaces, qui énumère tous les espaces de noms au sein de chaque collection de schémas XML et sys.xml_components, qui énumère tous les composants de schéma XML au sein de chaque schéma XML.
La fonction intégrée XML_SCHEMA_NAMESPACE, schemaName, XmlSchemacollectionName, namespace-uri, génère une xml instance de type de données. Cette instance contient des fragments de schéma XML pour les schémas contenus dans une collection de schémas XML, à l’exception des schémas XML prédéfinis.
Vous pouvez énumérer le contenu d’une collection de schémas XML de la manière suivante :
Écrivez des requêtes Transact-SQL sur les vues de catalogue appropriées pour les collections de schémas XML.
Utilisez la fonction intégrée XML_SCHEMA_NAMESPACE(). Vous pouvez appliquer
xmldes méthodes de type de données à la sortie de cette fonction. Toutefois, vous ne pouvez pas modifier les schémas XML sous-jacents.
Ces exemples sont illustrés dans les exemples suivants.
Exemple : énumérer les espaces de noms XML dans une collection de schémas XML
Utilisez la requête suivante pour la collection de schémas XML « myCollection » :
SELECT XSN.name
FROM sys.xml_schema_collections XSC JOIN sys.xml_schema_namespaces XSN
ON (XSC.xml_collection_id = XSN.xml_collection_id)
WHERE XSC.name = 'myCollection'
Exemple : énumérer le contenu d’une collection de schémas XML
L’instruction suivante énumère le contenu de la collection de schémas XML « myCollection » dans le schéma relationnel, dbo.
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection')
Des schémas XML individuels dans la collection peuvent être obtenus en tant qu’instances xml de type de données en spécifiant l’espace de noms cible comme troisième argument pour XML_SCHEMA_NAMESPACE(). Ceci est illustré dans l’exemple suivant.
Exemple : Sortie d’un schéma spécifié à partir d’une collection de schémas XML
L’instruction suivante génère le schéma XML avec l’espace de noms cible «https://www.microsoft.com/books » de la collection de schémas XML « myCollection » dans le schéma relationnel, dbo.
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection',
N'https://www.microsoft.com/books')
Interrogation de schémas XML
Vous pouvez interroger des schémas XML que vous avez chargés dans des collections de schémas XML de la manière suivante :
Écrivez des requêtes "Transact-SQL" sur les vues de catalogue pour les espaces de noms de schéma XML.
Créez une table qui contient une
xmlcolonne de type de données pour stocker vos schémas XML et les charger également dans le système de type XML. Vous pouvez interroger la colonne XML à l’aide des méthodes de type de donnéesxml. En outre, vous pouvez créer un index XML sur cette colonne. Toutefois, avec cette approche, l’application doit maintenir la cohérence entre les schémas XML stockés dans la colonne XML et le système de type XML. Par exemple, si vous supprimez l’espace de noms de schéma XML du système de type XML, vous devez également le supprimer de la table pour préserver la cohérence.
Voir aussi
Afficher une collection de schémas XML stockée
Prétraiter un schéma pour fusionner les schémas inclus
Conditions requises et limitations pour les collections de schémas XML sur le serveur