DDL zum Verwalten der XML-Schemaauflistungen in der Datenbank
Wie im Thema Verwalten von XML-Schemaauflistungen auf dem Server beschrieben, können Sie XML-Schemaauflistungen in der Datenbank erstellen und Variablen und Spalten des xml-Typs zuordnen. SQL Server bietet die folgenden DDL-Anweisungen zum Verwalten von Schemaauflistungen:
CREATE XML SCHEMA COLLECTION (Transact-SQL) Importiert die Schemakomponenten in eine Datenbank.
ALTER XML SCHEMA COLLECTION (Transact-SQL) Ändert die Schemakomponenten in einer vorhandenen XML-Schemaauflistung.
DROP XML SCHEMA COLLECTION (Transact-SQL) Löscht eine gesamte XML-Schemaauflistung und alle zugehörigen Komponenten.
Um eine XML-Schemaauflistung und die darin enthaltenen Schemas zu verwenden, müssen Sie zuerst mit der CREATE XML SCHEMA COLLECTION-Anweisung die Auflistung und die Schemas erstellen. Nach dem Erstellen der Schemaauflistung können Sie Variablen und Spalten vom Typ xml erstellen und diese der Schemaauflistung zuordnen. Beachten Sie, dass nach dem Erstellen der Schemaauflistung verschiedene Schemakomponenten in den Metadaten gespeichert werden. Mit der Anweisung ALTER XML SCHEMA COLLECTION können Sie zu vorhandenen Schemas außerdem weitere Komponenten oder zu vorhandenen Auflistungen neue Schemas hinzufügen.
Zum Löschen der Schemaauflistung verwenden Sie die DROP XML SCHEMA COLLECTION-Anweisung. Diese Anweisung löscht alle in der Auflistung enthaltenen Schemas und entfernt das Auflistungsobjekt. Beachten Sie, dass zum Löschen einer Schemaauflistung zuerst die unter DROP XML SCHEMA COLLECTION (Transact-SQL) beschriebenen Bedingungen erfüllt sein müssen.
Grundlegendes zu Schemakomponenten
Wenn Sie die CREATE XML SCHEMA COLLECTION-Anweisung verwenden, werden verschiedene Schemakomponenten in die Datenbank importiert. Zu den Schemakomponenten gehören Schemaelemente, -attribute und -typdefinitionen. Wenn Sie die DROP XML SCHEMA COLLECTION-Anweisung verwenden, wird die komplette Schemaauflistung entfernt.
CREATE XML SCHEMA COLLECTION speichert die Schemakomponenten in verschiedenen Systemtabellen.
Angenommen, das folgende Schema liegt vor:
<?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>
Das obige Schema zeigt die verschiedenen Attributtypen von Komponenten, die in der Datenbank gespeichert werden können. Hierzu zählen SomeAttribute, SomeType, OrderType, CustomerType, Customer, Order, CustomerID, OrderID, OrderDate, RequiredDate und ShippedDate.
Komponentenkategorien
Die in der Datenbank gespeicherten Schemakomponenten fallen in folgende Kategorien:
ELEMENT
ATTRIBUTE
TYPE (für einfache oder komplexe Typen)
ATTRIBUTEGROUP
MODELGROUP
Beispiel:
SomeAttribute ist eine ATTRIBUTE-Komponente.
SomeType, OrderType und CustomerType sind TYPE-Komponenten.
Customer ist eine ELEMENT-Komponente.
Wenn Sie ein Schema in die Datenbank importieren, wird von SQL Server nicht das Schema als solches gespeichert. SQL Server speichert stattdessen die verschiedenen Einzelkomponenten. Das <Schema>-Tag wird demnach nicht gespeichert, es werden nur die darin definierten Komponenten aufbewahrt. Nicht alle Schemaelemente werden erhalten. Wenn das <Schema>-Tag Attribute enthält, die das Standardverhalten seiner Komponenten definieren, werden diese Attribute während des Importvorgangs zu den darin enthaltenen Komponenten verschoben. Die folgende Tabelle stellt dies dar.
Attributname |
Verhalten |
---|---|
attributeFormDefault |
Das form-Attribut, das für alle im Schema enthaltenen Attributdeklarationen angewendet wird, die dieses Attribut noch nicht enthalten. Der Wert wird auf den Wert des attributeFormDefault-Attributs festgelegt. |
elementFormDefault |
Das form-Attribut, das für alle im Schema enthaltenen Elementdeklarationen angewendet wird, die dieses Attribut noch nicht enthalten. Der Wert wird auf den Wert des elementFormDefault-Attributs festgelegt. |
blockDefault |
Das block-Attribut, das für alle Elementdeklarationen und Typdefinitionen angewendet wird, die dieses Attribut noch nicht enthalten. Der Wert wird auf den Wert des blockDefault-Attributs festgelegt. |
finalDefault |
Das final-Attribut, das für alle Elementdeklarationen und Typdefinitionen angewendet wird, die dieses Attribut noch nicht enthalten. Der Wert wird auf den Wert des finalDefault-Attributs festgelegt. |
targetNamespace |
Zum Zielnamespace gehörende Informationen über die Komponenten werden in den Metadaten gespeichert. |
Siehe auch