xml şema KOLEKSİYONU (Transact-SQL) oluştur
Şema bileşenleri bir veritabanına alır.
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 kabul edilir.sql_identifier
SQL xml şema koleksiyontanımlayıcısıdır.Expression
Bir dize sabit veya skaler değişkendir.Is varchar, varbinary, nvarchar, or xml type.
Açıklamalar
Ayrıca koleksiyon yeni ad alanları eklemek veya yeni bileşenleri koleksiyon içinde varolan ad alanları kullanarak eklemek xml şema KOLEKSİYONU alter.
Koleksiyonları kaldırmak için xml şema KOLEKSİYONU (Transact-SQL) bırak.
İzinler
Bir xml şema KOLEKSİYONU oluşturmak için aşağıdaki izinleri kümesi en az birini gerektirir:
Sunucu denetimi izni
alter any database izni sunucu üzerinde
alter veritabanı izni
Veritabanındaki denetim izni
alter any schema ve veritabanında xml şema KOLEKSİYONU oluşturma izni
xml şema KOLEKSİYONU oluşturma izni veritabanında ve ilişkisel şema üzerinde alter veya Denetim izni
Örnekler
A.Veritabanında xml şema koleksiyon oluşturma
Aşağıdaki örnek xml şema koleksiyonoluştururManuInstructionsSchemaCollection. koleksiyon 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
Alternatif olarak, şema koleksiyon bir değişkene atar ve değişkeni belirtmek CREATE XML SCHEMA COLLECTION deyim aşağıdaki gibi:
DECLARE @MySchemaCollection nvarchar(max)
Set @MySchemaCollection = N' copy the schema collection here'
CREATE XML SCHEMA COLLECTION MyCollection AS @MySchemaCollection
Örneğin, değişkendir nvarchar(max) türü.Değişken de kaynaklanabilir xml hangi durumveri türü bir dizeörtülü olarak dönüştürülür.
Daha fazla bilgi için, bkz. Depolanan xml şema koleksiyonu görüntüleme.
Şema koleksiyonları depolamak isteyebilirsiniz bir xml sütunyazın.Bu durumda, xml şema koleksiyonoluşturmak için aşağıdakileri gerçekleştirin:
Şema koleksiyon , bir select deyim kullanarak sütun almak ve bir değişkene atar xml türü, veya bir varchar türü.
Değişken adını xml şema KOLEKSİYONU oluşturma deyimbelirtin.
xml şema KOLEKSİYONU oluşturmak, yalnızca SQL Server anlar şema bileşenleri depolar; xml Schema'da her şeyi veritabanında depolanmaz.Bu nedenle, xml şema koleksiyon geri tam olarak sağlanan şekilde istediğiniz, xml şemalarınızı veritabanı sütun veya başka bir klasörü bilgisayarınıza kaydetmeniz önerilir.
B.Şema koleksiyonbulunan birden çok şema ad belirtme
Birden çok xml şemaları, xml şema koleksiyonoluştururken 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>'
Aşağıdaki örnek xml şema koleksiyonoluştururProductDescriptionSchemaCollection içeren iki xml şema ad alanları.
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
İçermeyen bir şema, bir targetNamespace öznitelik koleksiyonalındığından, bileşenlerinin aşağıdaki örnekte gösterildiği gibi boş dize hedef ad alanıyla ilişkilendirilir.koleksiyon içinde 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=''
D.Bir xml şema koleksiyon ve toplu işlemleri kullanma
Şema koleksiyon oluşturulduğu aynı toplu iş başvurulamaz.koleksiyon oluşturulduğu aynı toplu iş başvurusu yapmak çalışırsanız, koleksiyon yok olduğunu söyleyen bir hata iletisi alır.Aşağıdaki örnek çalışır; Ancak, siz kaldırırsanız, GO ve bu nedenle, xml şema koleksiyon yazmak için başvurmak deneyin bir xml aynı toplu işdeğişkeninde bunu döndürür bir 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
Ayrıca bkz.