XML SCHEMA koleksiyon (Transact-SQL) CREATE
Şema bileşenleri, bir veritabanına alır.
CREATE XML SCHEMA COLLECTION [ <relational_schema>. ]sql_identifier AS Expression
Bağımsız değişkenler
relational_schema
Ilişkisel bir şema tanımlar.Belirtilmezse, varsayılan ilişkisel şema kabul edilir.sql_identifier
XML şeması için SQL tanımlayıcısıdır koleksiyon.Expression
Sabit veya skaler bir dize değişken belirtilir.Iş varchar, varbinary, nvarchar, veya xml yazın.
Remarks
Yeni bir ad için de ekleyebilirsiniz koleksiyon varolan ad boşluklarında yeni bileşenler ekleyin veya koleksiyon kullanarak alter xml ŞEMA koleksiyon.
Topluluklar kaldırmak için kullanın. XML SCHEMA koleksiyon (Transact-SQL) DROP.
İzinler
Bir XML SCHEMA koleksiyon oluşturmak için aşağıdaki izinleri kümeleri en az biri gerekir:
Sunucu DENETIM izni
Sunucuda HERHANGI bir DATABASE iznine ALTER
ALTER veritabanı izni
Veritabanındaki DENETIM izni
ALTER ANY SCHEMA iznine ve veritabanındaki CREATE XML SCHEMA koleksiyon izni
Ilişkisel bir şemayı ve XML SCHEMA koleksiyon CREATE izin veritabanındaki ALTER veya DENETIM izni
Örnekler
C.XML şema koleksiyon veritabanında oluşturma.
Aşağıdaki örnek, XML şema koleksiyon oluşturur. ManuInstructionsSchemaCollection. 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
Şema koleksiyon bir değişkene atar ve değişken olarak belirlemek isterseniz, 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
Örnek değişkeni ilerisindedir nvarchar(max) yazın. Değişken de olabilir xml veri türü, durum, bir dize için örtülü olarak dönüştürülür.
Daha fazla bilgi için bkz:Saklı bir XML şeması topluluk görüntüleme.
Şema koleksiyonları de depolayabilir bir xml Tür sütun. Bu durumda, XML şema koleksiyon oluşturmak için aşağıdakileri gerçekleştirin:
Şema koleksiyon, bir deyim kullanarak sütundan almak ve bunu bir değişkene atar xml Tür, veya varchar yazın.
Değişken adını XML SCHEMA koleksiyon CREATE deyiminde belirtin.
CREATE XML SCHEMA koleksiyon yalnızca SQL Server anladığı şema bileşenleri depolar; XML şemasındaki her şeyi veritabanında depolanır.Bu nedenle, XML şema koleksiyon yeniden sağlanmadı, yolu tam olarak istediğiniz, XML şemalarınızı bir veritabanı sütun veya başka bir klasöre bilgisayarınıza kaydetmeniz önerilir.
b.Bir şema içinde birden çok şema ad belirterek koleksiyon
Bir XML şema koleksiyon 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>'
Aşağıdaki örnek, XML şema koleksiyon oluşturur. ProductDescriptionSchemaCollection XML şeması için iki ad içerir.
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.Bir şema hedef ad alanı belirtmiyor alınıyor
Bir şema içeriyor mu yoksa bir targetNamespace özniteliği, alınan bir koleksiyon, bileşenleri aşağıdaki örnekte gösterildiği gibi boş dize hedef ad alanıyla ilişkilidir.Bir veya daha fazla şemalar koleksiyonunda içe ilişkilendirme (büyük olasılıkla ilgisi olmayan) birden çok şema bileşeni varsayılan boş dize ad alanıyla ilişkilendirilmiş 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
Bir şema koleksiyon burada oluşturulur aynı toplu iş iş iş başvurulamaz.Aynı toplu iş oluşturulduğu bir koleksiyonunda başvurusu yapmayı denerseniz, koleksiyon yok belirten bir hata alırsınız.Aşağıdaki örnek çalışır; ancak, siz kaldırırsanız, GO ve bu nedenle, yazmanız için bir XML şema koleksiyon başvuru çalışırsanız bir xml değişken, aynı toplu iş iş iş, bir hata döndürecektir.
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
See Also