Поделиться через


DDL для управления коллекциями XML-схем в базе данных

Как описано в разделе Управление коллекциями XML-схем на сервере, в базе данных можно создавать коллекции XML-схем и связывать их с переменными и столбцами типа xml. Для управления коллекциями схем в базе данных в SQL Server предусмотрены следующие инструкции DDL:

Чтобы использовать коллекцию XML-схем и содержащиеся в ней схемы, следует сначала создать коллекцию и схемы с помощью инструкции CREATE XML SCHEMA COLLECTION. После создания коллекции схемы можно создавать переменные и столбцы типа xml и связать с ними коллекцию схем. Обратите внимание, что после создания коллекции различные компоненты схем будут храниться в метаданных. Кроме того, добавлять большие компоненты в существующие схемы или новые схемы в существующую коллекцию можно с помощью инструкции ALTER XML SCHEMA COLLECTION.

Удалить коллекцию схем можно с помощью инструкции DROP XML SCHEMA COLLECTION. При этом удаляются все схемы в коллекции и сам объект коллекции. Обратите внимание, что для удаления коллекции должны выполняться условия, описанные в разделе DROP XML SCHEMA COLLECTION.

Основные сведения о компонентах схемы

При использовании инструкции CREATE XML SCHEMA COLLECTION в базу данных импортируются различные компоненты схемы. К компонентам схемы относятся ее элементы, атрибуты и определения типов. При использовании инструкции DROP XML SCHEMA COLLECTION коллекция удаляется целиком.

Инструкция CREATE XML SCHEMA COLLECTION сохраняет компоненты схемы в различных системных таблицах.

Например, рассмотрим следующую схему:

<?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>

В приведенной выше схеме показаны различные типы компонентов, которые могут храниться в базе данных. Это компоненты SomeAttribute, SomeType, OrderType, CustomerType, Customer, Order, CustomerID, OrderID, OrderDate, RequiredDate и ShippedDate.

Типы компонентов

Компоненты схемы, хранящиеся в базе данных, делятся на следующие категории:

  • ELEMENT;
  • ATTRIBUTE;
  • TYPE (для простых и сложных типов);
  • ATTRIBUTEGROUP;
  • MODELGROUP.

Ниже приведена связь компонентов и соответствующих категорий:

  • SomeAttribute — компонент типа ATTRIBUTE.
  • SomeType, OrderType и CustomerType — компоненты типа TYPE.
  • SomeAttribute — компонент типа ELEMENT.

При импорте схемы в базу данных SQL Server не сохраняет саму схему. Вместо этого SQL Server сохраняет различные отдельные компоненты. То есть тег <Schema> не сохраняется, а сохраняются компоненты, заданные внутри него. Все элементы схемы не сохраняются. Если тег <Schema> содержит атрибуты, которые задают поведение по умолчанию для его компонентов, то во время импорта эти атрибуты перемещаются в компоненты схемы внутри нее, как показано в следующей таблице.

Имя атрибута Поведение

attributeFormDefault

Атрибут form применяется ко всем объявлениям атрибутов в схеме, где его еще нет. Ему присваивается значение, равное значению атрибута attributeFormDefault.

elementFormDefault

Атрибут form применяется ко всем объявлениям элементов в схеме, где его еще нет. Ему присваивается значение, равное значению атрибута elementFormDefault.

blockDefault

Атрибут block применяется ко всем объявлениям элементов и определениям типов в схеме, где его еще нет. Ему присваивается значение, равное значению атрибута blockDefault.

finalDefault

Атрибут final применяется ко всем объявлениям элементов и определениям типов в схеме, где его еще нет. Ему присваивается значение, равное значению атрибута finalDefault.

targetNamespace

Сведения о компонентах, принадлежащих целевому пространству имен, хранятся в метаданных.

См. также

Справочник

Правила и ограничения по использованию коллекций XML-схем на сервере
Разрешения на коллекцию XML-схем
Управление коллекциями XML-схем на сервере

Основные понятия

Тип данных xml
Типизированный и нетипизированный XML

Справка и поддержка

Получение помощи по SQL Server 2005