用于管理数据库中的 XML 架构集合的 DDL
按照管理服务器上的 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 种类的组件。
- Customer 是 ELEMENT 种类的组件。
将架构导入数据库时,SQL Server 不会存储架构本身。相反,SQL Server 会存储各种不同的组件。也就是说,不存储 <Schema> 标记,仅存储在其中定义的组件。不存储所有的架构元素。如果 <Schema> 标记包含指定其组件默认行为的属性,则在导入过程中,将把这些属性移动到其中的架构组件,如下表所示。
属性名称 | 行为 |
---|---|
attributeFormDefault |
应用于架构中所有属性声明的 form 属性,此架构中不存在此属性并且将值设置为 attributeFormDefault 属性的值。 |
elementFormDefault |
应用于架构中所有元素声明的 form 属性,此架构中不存在此属性并且将值设置为 elementFormDefault 属性的值。 |
blockDefault |
应用于所有元素声明和类型定义的 block 属性,这些声明和定义中不存在此属性并且将值设置为 blockDefault 属性的值。 |
finalDefault |
应用于所有元素声明和类型定义的 final 属性,这些声明和定义中不存在此属性并且将值设置为 finalDefault 属性的值。 |
targetNamespace |
有关属于目标命名空间的组件的信息存储在元数据中。 |
请参阅
参考
在服务器上使用 XML 架构集合的准则和限制
XML 架构集合的权限
管理服务器上的 XML 架构集合