Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
Új sémakomponenseket ad hozzá egy meglévő XML sémagyűjteményhez.
Transact-SQL szintaxis konvenciók
Syntax
ALTER XML SCHEMA COLLECTION [ relational_schema. ]sql_identifier ADD 'Schema Component'
Arguments
relational_schema
Azonosítja a relációs séma nevét. Ha nincs megadva, a rendszer feltételezi az alapértelmezett relációs sémát.
sql_identifier
Az XML sémagyűjtemény SQL azonosítója.
'Séma komponens'
Ez a séma komponens a beillesztés.
Remarks
Használd az ALTER XML SCHEMA COLLECTION új XML sémák hozzáadásához, amelyek névterei már nincsenek az XML séma gyűjteményben, vagy új komponenseket adj hozzá a gyűjtemény meglévő névtereihez.
A következő példa új <elemet> ad hozzá a gyűjtemény https://MySchema/test_xml_schemameglévő névtéréhezMyColl.
-- First create an XML schema collection.
CREATE XML SCHEMA COLLECTION MyColl AS '
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://MySchema/test_xml_schema">
<element name="root" type="string"/>
</schema>'
-- Modify the collection.
ALTER XML SCHEMA COLLECTION MyColl ADD '
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://MySchema/test_xml_schema">
<element name="anotherElement" type="byte"/>
</schema>';
ALTER XML SCHEMA elemet ad <anotherElement> hozzá a korábban definiált névtérhez https://MySchema/test_xml_schema.
Fontos megjegyezni, hogy ha néhány komponens, amit hozzáadni szeretnél a gyűjtemény referenciakomponenseihez, amelyek már ugyanabban a gyűjteményben vannak, akkor használnod <import namespace="referenced_component_namespace" />kell . Azonban nem érvényes a jelenlegi séma névtér használata , <xsd:import>ezért ugyanabból a cél névtérből származó komponenseket automatikusan importálják.
A gyűjtemények eltávolításához használdDROP XML SCHEMA COLLECTION a (Transact-SQL) gombot.
Ha a sémagyűjtemény már tartalmaz egy laza validációs vakerkártyát vagy egy xs:anyType típusú elemet, akkor egy új globális elem, típus vagy attribútum-deklaráció hozzáadása a sémagyűjteményhez az összes tárolt adat újravalidálását eredményezi, amelyet a sémagyűjtemény korlátoz.
Permissions
Egy módosításhoz XML SCHEMA COLLECTION ALTER engedély szükséges a gyűjteményhez.
Examples
A. XML sémagyűjtemény létrehozása az adatbázisban
Az alábbi példa létrehozza az XML-sémagyűjteményt ManuInstructionsSchemaCollection. A gyűjtemény csak egy sémanévtérrel rendelkezik.
-- 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 the collection name
-- that is 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;
Másik lehetőségként hozzárendelheti a sémagyűjteményt egy változóhoz, és az utasításban az alábbiak szerint adhatja meg a CREATE XML SCHEMA COLLECTION változót:
DECLARE @MySchemaCollection nvarchar(max);
SET @MySchemaCollection = N' copy the schema collection here';
CREATE XML SCHEMA COLLECTION AS @MySchemaCollection;
A példában szereplő változó típusa.nvarchar(max) A változó lehet xml adattípusú is, ebben az esetben implicit módon átalakítják egy stringgróba.
További információ: Tárolt XML-sémagyűjtemény megtekintése.
A sémagyűjteményeket xml típusú oszlopban tárolhatod. Ebben az esetben XML-sémagyűjtemény létrehozásához hajtsa végre a következő lépéseket:
A séma gyűjteményt az oszlopból SELECT utasítással kell hozzárendelni, és egy xml típusú vagy varchar típusú változóhoz rendelni.
Adja meg a változó nevét az CREATE XML SCHEMA COLLECTION utasításban.
Csak CREATE XML SCHEMA COLLECTION azokat a séma komponenseket tárolja, amelyeket az SQL Server ért; az XML sémában lévő minden nem tárolódik az adatbázisban. Ezért, ha szeretnéd visszakapni az XML sémagyűjteményt pontosan a rendelkezésre állás módjára, javasoljuk, hogy mentsd el az XML sémákat egy adatbázis-oszlopban vagy valamelyik másik mappában a számítógépen.
B. Több séma névtér meghatározása egy sémagyűjteményben
XML-sémacsoport létrehozásakor több XML-sémát is megadhat. Például:
CREATE XML SCHEMA COLLECTION N'
<xsd:schema>....</xsd:schema>
<xsd:schema>...</xsd:schema>';
Az alábbi példa két XML-sémanévteret tartalmazó XML-sémagyűjteményt ProductDescriptionSchemaCollection hoz létre.
CREATE XML SCHEMA COLLECTION ProductDescriptionSchemaCollection AS
'<xsd:schema targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain"
xmlns="http://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="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription"
elementFormDefault="qualified"
xmlns:mstns="https://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. Olyan séma importálása, amely nem határoz meg célnévteret
Ha egy olyan sémát importálnak, amely nem tartalmaz targetNamespace attribútumot, akkor az összetevők az üres string target névtérhez kapcsolódnak, ahogy az alábbi példában látható. Fontos megjegyezni, hogy ha nem egy vagy több behozott sémát nem társítunk a gyűjteménybe, több séma komponens (potenciálisan nem kapcsolódik) kapcsolódik az alapértelmezett üres string névtérhez.
-- 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='';