xml şema KOLEKSIYONU (Transact-sql) oluştur

Şema bileşenleri bir veritabanına alır.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

CREATE XML SCHEMA COLLECTION [ <relational_schema>. ]sql_identifier AS Expression

Bağımsız değişkenler

  • relational_schema
    İlişkisel şema tanımlar. Belirtilmezse, varsayılan ilişkisel şema varsayılır.

  • sql_identifier
    sql xml şema derlemesinin tanımlayıcısıdır.

  • Expression
    Bir dize sabit veya skalar değişkendir. Is varchar, varbinary, nvarchar, or xml type.

Açıklamalar

Ayrıca Koleksiyon yeni ad alanları eklemek veya yeni bileşenleri koleksiyonu içinde varolan ad alanları eklemek xml şema koleksiyonu alter.

Koleksiyonları kaldırmak için xml şema KOLEKSIYONU (Transact-sql) bırak.

İzinler

xml şema koleksiyonu oluşturmak için izinleri aşağıdaki kümeleri en az birini gerektirir:

  • Sunucu DENETIM izni

  • alter any database izni sunucu

  • alter veritabanı izni

  • Veritabanındaki DENETIM izni

  • Herhangi bir şema alter izni ve veritabanındaki create xml şema KOLEKSIYONU izni

  • create xml şema KOLEKSIYONU izni veritabanında ve ilişkisel şema üzerinde alter veya denetimi izni

Örnekler

A.Veritabanında xml şema koleksiyonu oluşturma

Aşağıdaki örnek xml şema koleksiyonu oluşturur ManuInstructionsSchemaCollection. Koleksiyonun yalnızca bir şema ad alanı vardır.

-- Create a sample database in which to load the XML schema collection.
CREATE DATABASE SampleDB
GO
USE SampleDB
GO
CREATE XML SCHEMA COLLECTION ManuInstructionsSchemaCollection AS
N'<?xml version="1.0" encoding="UTF-16"?>
<xsd:schema targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" 
   xmlns          ="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" 
   elementFormDefault="qualified" 
   attributeFormDefault="unqualified"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

    <xsd:complexType name="StepType" mixed="true" >
        <xsd:choice  minOccurs="0" maxOccurs="unbounded" > 
            <xsd:element name="tool" type="xsd:string" />
            <xsd:element name="material" type="xsd:string" />
            <xsd:element name="blueprint" type="xsd:string" />
            <xsd:element name="specs" type="xsd:string" />
            <xsd:element name="diag" type="xsd:string" />
        </xsd:choice> 
    </xsd:complexType>

    <xsd:element  name="root">
        <xsd:complexType mixed="true">
            <xsd:sequence>
                <xsd:element name="Location" minOccurs="1" maxOccurs="unbounded">
                    <xsd:complexType mixed="true">
                        <xsd:sequence>
                            <xsd:element name="step" type="StepType" minOccurs="1" maxOccurs="unbounded" />
                        </xsd:sequence>
                        <xsd:attribute name="LocationID" type="xsd:integer" use="required"/>
                        <xsd:attribute name="SetupHours" type="xsd:decimal" use="optional"/>
                        <xsd:attribute name="MachineHours" type="xsd:decimal" use="optional"/>
                        <xsd:attribute name="LaborHours" type="xsd:decimal" use="optional"/>
                        <xsd:attribute name="LotSize" type="xsd:decimal" use="optional"/>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>' ;
GO
-- Verify - list of collections in the database.
select *
from sys.xml_schema_collections
-- Verify - list of namespaces in the database.
select name
from sys.xml_schema_namespaces

-- Use it. Create a typed xml variable. Note collection name specified.
DECLARE @x xml (ManuInstructionsSchemaCollection)
GO
--Or create a typed xml column.
CREATE TABLE T (
        i int primary key, 
        x xml (ManuInstructionsSchemaCollection))
GO
-- Clean up
DROP TABLE T
GO
DROP XML SCHEMA COLLECTION ManuInstructionsSchemaCollection
Go
USE Master
GO
DROP DATABASE SampleDB

-- Create a sample database in which to load the XML schema collection.
CREATE DATABASE SampleDB
GO
USE SampleDB
GO
CREATE XML SCHEMA COLLECTION ManuInstructionsSchemaCollection AS
N'<?xml version="1.0" encoding="UTF-16"?>
<xsd:schema targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" 
   xmlns          ="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions" 
   elementFormDefault="qualified" 
   attributeFormDefault="unqualified"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

    <xsd:complexType name="StepType" mixed="true" >
        <xsd:choice  minOccurs="0" maxOccurs="unbounded" > 
            <xsd:element name="tool" type="xsd:string" />
            <xsd:element name="material" type="xsd:string" />
            <xsd:element name="blueprint" type="xsd:string" />
            <xsd:element name="specs" type="xsd:string" />
            <xsd:element name="diag" type="xsd:string" />
        </xsd:choice> 
    </xsd:complexType>

    <xsd:element  name="root">
        <xsd:complexType mixed="true">
            <xsd:sequence>
                <xsd:element name="Location" minOccurs="1" maxOccurs="unbounded">
                    <xsd:complexType mixed="true">
                        <xsd:sequence>
                            <xsd:element name="step" type="StepType" minOccurs="1" maxOccurs="unbounded" />
                        </xsd:sequence>
                        <xsd:attribute name="LocationID" type="xsd:integer" use="required"/>
                        <xsd:attribute name="SetupHours" type="xsd:decimal" use="optional"/>
                        <xsd:attribute name="MachineHours" type="xsd:decimal" use="optional"/>
                        <xsd:attribute name="LaborHours" type="xsd:decimal" use="optional"/>
                        <xsd:attribute name="LotSize" type="xsd:decimal" use="optional"/>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>' ;
GO
-- Verify - list of collections in the database.
select *
from sys.xml_schema_collections
-- Verify - list of namespaces in the database.
select name
from sys.xml_schema_namespaces

-- Use it. Create a typed xml variable. Note collection name specified.
DECLARE @x xml (ManuInstructionsSchemaCollection)
GO
--Or create a typed xml column.
CREATE TABLE T (
        i int primary key, 
        x xml (ManuInstructionsSchemaCollection))
GO
-- Clean up
DROP TABLE T
GO
DROP XML SCHEMA COLLECTION ManuInstructionsSchemaCollection
Go
USE Master
GO
DROP DATABASE SampleDB

Alternatif olarak, şema koleksiyonu bir değişkene atar ve değişken belirtmek CREATE XML SCHEMA COLLECTIONifadesi şöyle:

DECLARE @MySchemaCollection nvarchar(max)
Set @MySchemaCollection  = N' copy the schema collection here'
CREATE XML SCHEMA COLLECTION MyCollection AS @MySchemaCollection 

DECLARE @MySchemaCollection nvarchar(max)
Set @MySchemaCollection  = N' copy the schema collection here'
CREATE XML SCHEMA COLLECTION MyCollection AS @MySchemaCollection 

Örnek değişken olduğunu nvarchar(max)türü. Değişken de olabilir xmlveri türü, bu durumda, bu örtülü bir dizeye dönüştürülür.

Daha fazla bilgi için, bkz. Depolanan xml şema koleksiyonu görüntülemek.

Şema koleksiyonları depolayabilen bir xmltürü sütun. Bu durumda, xml şema koleksiyonu oluşturmak için aşağıdakileri gerçekleştirin:

  1. Şema koleksiyonu, bir select deyimi kullanarak bir sütun almak ve bir değişkene atar xmltürü, ya da bir varchartürü.

  2. xml şema KOLEKSIYONU create deyiminde değişken adını belirtin.

xml şema KOLEKSIYONU create SQL Server anlayan şema bileşenleri depolar; her xml şema veritabanı içinde saklanmaz. Bu nedenle, xml şema koleksiyonu tam olarak tedarik edildi şekilde yedeklemek istiyorsanız, size xml şemalarınızı bir veritabanı sütunu veya başka bir klasöre bilgisayarınıza kaydetmenizi öneririz.

B.Şema koleksiyonu içinde birden çok şema ad alanı belirtme

xml şema koleksiyonu oluşturduğunuzda, birden çok xml şemaları belirtebilirsiniz. Örneğin:

CREATE XML SCHEMA COLLECTION MyCollection AS N'
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- Contents of schema here -->  
</xsd:schema>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- Contents of schema here -->
</xsd:schema>'

CREATE XML SCHEMA COLLECTION MyCollection AS N'
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- Contents of schema here -->  
</xsd:schema>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!-- Contents of schema here -->
</xsd:schema>'

Aşağıdaki örnek xml şema koleksiyonu oluşturur ProductDescriptionSchemaCollectioniki xml şema ad alanları içeren.

CREATE XML SCHEMA COLLECTION ProductDescriptionSchemaCollection AS 
'<xsd:schema targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain"
    xmlns="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain" 
    elementFormDefault="qualified" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
    <xsd:element name="Warranty"  >
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="WarrantyPeriod" type="xsd:string"  />
                <xsd:element name="Description" type="xsd:string"  />
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
 <xs:schema targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" 
    xmlns="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" 
    elementFormDefault="qualified" 
    xmlns:mstns="http://tempuri.org/XMLSchema.xsd" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:wm="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain" >
    <xs:import 
namespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain" />
    <xs:element name="ProductDescription" type="ProductDescription" />
        <xs:complexType name="ProductDescription">
            <xs:sequence>
                <xs:element name="Summary" type="Summary" minOccurs="0" />
            </xs:sequence>
            <xs:attribute name="ProductModelID" type="xs:string" />
            <xs:attribute name="ProductModelName" type="xs:string" />
        </xs:complexType>
        <xs:complexType name="Summary" mixed="true" >
            <xs:sequence>
                <xs:any processContents="skip" namespace="http://www.w3.org/1999/xhtml" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
</xs:schema>'
;
GO -- Clean up
DROP XML SCHEMA COLLECTION ProductDescriptionSchemaCollection
GO

CREATE XML SCHEMA COLLECTION ProductDescriptionSchemaCollection AS 
'<xsd:schema targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain"
    xmlns="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain" 
    elementFormDefault="qualified" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
    <xsd:element name="Warranty"  >
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="WarrantyPeriod" type="xsd:string"  />
                <xsd:element name="Description" type="xsd:string"  />
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>
 <xs:schema targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" 
    xmlns="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription" 
    elementFormDefault="qualified" 
    xmlns:mstns="http://tempuri.org/XMLSchema.xsd" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:wm="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain" >
    <xs:import 
namespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain" />
    <xs:element name="ProductDescription" type="ProductDescription" />
        <xs:complexType name="ProductDescription">
            <xs:sequence>
                <xs:element name="Summary" type="Summary" minOccurs="0" />
            </xs:sequence>
            <xs:attribute name="ProductModelID" type="xs:string" />
            <xs:attribute name="ProductModelName" type="xs:string" />
        </xs:complexType>
        <xs:complexType name="Summary" mixed="true" >
            <xs:sequence>
                <xs:any processContents="skip" namespace="http://www.w3.org/1999/xhtml" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
</xs:schema>'
;
GO -- Clean up
DROP XML SCHEMA COLLECTION ProductDescriptionSchemaCollection
GO

C.Hedef ad alanı belirtmeyen bir şema alma

Eğer içermeyen bir şema bir targetNamespace özniteliği bir koleksiyon alındığından, aşağıdaki örnekte gösterildiği gibi bileşenleri boş dizge hedef ad alanıyla ilişkili. Koleksiyonda alınan bir veya daha fazla şemaları ilişkilendirme değil birden çok şema bileşenleri (potansiyel ilgisi olmayan) varsayılan boş dize ad alanı ile ilişkili olmasını neden olduğunu unutmayın.

-- Create a collection that contains a schema with no target namespace.
CREATE XML SCHEMA COLLECTION MySampleCollection AS '
<schema xmlns="http://www.w3.org/2001/XMLSchema"  xmlns:ns="http://ns">
<element name="e" type="dateTime"/>
</schema>'
go
-- Query will return the names of all the collections that 
--contain a schema with no target namespace.
SELECT sys.xml_schema_collections.name 
FROM   sys.xml_schema_collections 
JOIN   sys.xml_schema_namespaces 
ON     sys.xml_schema_collections.xml_collection_id = 
       sys.xml_schema_namespaces.xml_collection_id 
WHERE  sys.xml_schema_namespaces.name=''

-- Create a collection that contains a schema with no target namespace.
CREATE XML SCHEMA COLLECTION MySampleCollection AS '
<schema xmlns="http://www.w3.org/2001/XMLSchema"  xmlns:ns="http://ns">
<element name="e" type="dateTime"/>
</schema>'
go
-- Query will return the names of all the collections that 
--contain a schema with no target namespace.
SELECT sys.xml_schema_collections.name 
FROM   sys.xml_schema_collections 
JOIN   sys.xml_schema_namespaces 
ON     sys.xml_schema_collections.xml_collection_id = 
       sys.xml_schema_namespaces.xml_collection_id 
WHERE  sys.xml_schema_namespaces.name=''

D.xml şema koleksiyonu ve toplu işlemleri kullanma

Şema koleksiyonu oluşturulduğu aynı kümede başvurulamaz. Koleksiyonu oluşturulduğu aynı toplu iş başvurusu yapmak çalışırsanız, bir hata koleksiyonu yok diyerek alırsınız. Aşağıdaki örnek çalışır; Ancak, eğer kaldırmak GOve bu nedenle, yazmak için xml şema koleksiyonu başvurmayı deneyin bir xmldeğişken aynı toplu işlem, o-ecek dönmek hata.

CREATE XML SCHEMA COLLECTION mySC AS '
<schema xmlns="http://www.w3.org/2001/XMLSchema">
      <element name="root" type="string"/>
</schema>
'
GO
CREATE TABLE T (Col1 xml (mySC))
GO

CREATE XML SCHEMA COLLECTION mySC AS '
<schema xmlns="http://www.w3.org/2001/XMLSchema">
      <element name="root" type="string"/>
</schema>
'
GO
CREATE TABLE T (Col1 xml (mySC))
GO

Ayrıca bkz.

Başvuru

alter xml şema KOLEKSIYONU (Transact-sql)

xml şema KOLEKSIYONU (Transact-sql) bırak

eventdata (Transact-sql)

xml şema KOLEKSIYONU (Transact-sql) bırak

Gereksinimleri ve xml şema koleksiyonları sunucu üzerindeki kısıtlamaları

Kavramlar

Yazılı xml yazılmamış xml karşılaştırın