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 Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Az xml (Transact-SQL) cikkben leírtak szerint az SQL Server az XML-adatok natív tárolását biztosítja az XML-adattípuson keresztül. Az XSD-sémákat opcionálisan hozzárendelheti egy változóhoz vagy egy XML-típusú oszlophoz egy XML-sémagyűjteményen keresztül. Az XML-sémagyűjtemény tárolja az importált XML-sémákat, majd a következő műveletek végrehajtására szolgál:
XML-példányok ellenőrzése
Írja be az XML-adatokat az adatbázisban tároltként
Az XML-sémagyűjtemény egy metaadat-entitás, például egy tábla az adatbázisban. Létrehozhatja, módosíthatja és elvetheti őket. A CREATE XML SCHEMA COLLECTION (Transact-SQL) utasításban megadott sémák automatikusan importálódnak az újonnan létrehozott XML-sémagyűjtemény-objektumba. Az ALTER XML SCHEMA COLLECTION (Transact-SQL) utasítással további sémákat vagy sémaösszetevőket importálhat az adatbázis meglévő gyűjteményobjektumába.
A cikkben leírtaknak megfelelően a gépelt és a nem beírt XML, a séma által társított oszlopban vagy változóban tárolt XML-t gépelt XML-nek nevezzük, mivel a séma biztosítja a példányadatokhoz szükséges adattípus-információkat. Az SQL Server ezeket a típusinformációkat használja az adattárolás optimalizálásához.
A lekérdezésfeldolgozó motor a sémát is használja a típusellenőrzéshez, valamint a lekérdezések és adatmódosítások optimalizálásához.
Az SQL Server emellett a társított XML-sémagyűjteményt használja beírt XML-fájllal az XML-példány ellenőrzéséhez. Ha az XML-példány megfelel a sémának, az adatbázis lehetővé teszi a példány tárolását a rendszerben a típusadatokkal együtt. Ellenkező esetben elutasítja az objektumot.
A belső függvény XML_SCHEMA_NAMESPACE használatával lekérheti az adatbázisban tárolt sémagyűjteményt. További információ: Tárolt XML-sémagyűjtemény megtekintése.
Az XML-sémagyűjtemény használatával XML-változókat, paramétereket és oszlopokat is beírhat.
DDL sémagyűjtemények kezeléséhez
Xml-sémagyűjteményeket hozhat létre az adatbázisban, és társíthatja őket xml típusú változókkal és oszlopokkal. A sémagyűjtemények adatbázisbeli kezeléséhez az SQL Server a következő DDL-utasításokat adja meg:
XML-SÉMAGYŰJTEMÉNY LÉTREHOZÁSA (Transact-SQL) Sémaösszetevőket importál egy adatbázisba.
ALTER XML-SÉMAGYŰJTEMÉNY (Transact-SQL) Módosítja a sémaösszetevőket egy meglévő XML-sémagyűjteményben.
DROP XML-SÉMAGYŰJTEMÉNY (Transact-SQL) Törli a teljes XML-sémagyűjteményt és annak összes összetevőjét.
Az XML-sémagyűjtemény és a benne található sémák használatához először létre kell hoznia a gyűjteményt és a sémákat a CREATE XML SCHEMA COLLECTION utasítással. A sémagyűjtemény létrehozása után xml típusú változókat és oszlopokat hozhat létre, és társíthatja velük a sémagyűjteményt. A sémagyűjtemény létrehozása után a rendszer különböző sémaösszetevőket tárol a metaadatokban. Az ALTER XML SÉMAGYŰJTEMÉNY használatával további összetevőket is hozzáadhat a meglévő sémákhoz, vagy új sémákat adhat hozzá egy meglévő gyűjteményhez.
A sémagyűjtemény elvetéséhez használja a DROP XML SCHEMA COLLECTION utasítást. Ezzel eltávolítja a gyűjteményben található összes sémát, és eltávolítja a gyűjteményobjektumot. A sémagyűjtemény elvetése előtt meg kell felelnie a DROP XML SCHEMA COLLECTION (Transact-SQL) című cikkben leírt feltételeknek.
Sémaösszetevők ismertetése
A CREATE XML SCHEMA COLLECTION utasítás használatakor a rendszer különböző sémaösszetevőket importál az adatbázisba. A sémaösszetevők sémaelemeket, attribútumokat és típusdefiníciókat tartalmaznak. A DROP XML SCHEMA COLLECTION utasítás használatakor eltávolítja a teljes gyűjteményt.
A CREATE XML SCHEMA COLLECTION különböző sémaösszetevőket menti rendszertáblákba.
Vegyük például a következő sémát:
<?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>
Az előző séma az adatbázisban tárolható összetevők különböző típusait mutatja be. Ezek közé tartozik SomeAttribute, SomeType, OrderType, CustomerType, Customer, Order, CustomerID, OrderID, OrderDate, RequiredDate, és ShippedDate.
Összetevők kategóriái
Az adatbázisban tárolt sémaösszetevők a következő kategóriákba sorolhatók:
ELEM
ATTRIBÚTUM
TÍPUS (egyszerű vagy összetett típusok esetén)
ATTRIBÚTUMCSOPORT
MODELGROUP
Például:
SomeAttributeegy attribútum-összetevő.SomeType,OrderTypeésCustomerTypeTYPE-összetevők.Customeregy ELEM összetevő.
Amikor sémát importál az adatbázisba, az SQL Server nem tárolja magát a sémát. Ehelyett az SQL Server tárolja a különböző összetevőket. Ez azt jelzi, hogy a <sémacímke> nincs tárolva, csak a benne definiált összetevők maradnak meg. A sémaelemek nem maradnak meg. Ha a <sémacímke> olyan attribútumokat tartalmaz, amelyek meghatározzák az összetevők alapértelmezett viselkedését, ezeket az attribútumokat a rendszer az importálási folyamat során áthelyezi a benne lévő sémaösszetevőkbe, ahogyan az az alábbi táblázatban látható.
| Az attribútum neve | Magatartás |
|---|---|
| attributeFormDefault | Az űrlapattribútum azon séma összes attribútumdeklarációjára vonatkozik, ahol még nincs jelen, és az érték aFormDefault attribútum értékére van állítva. |
| elementFormDefault | A űrlap attribútumot alkalmazzák a séma összes elemdeklarációjára, ahol még nincs jelen, és az értéket az elementFormDefault attribútum értékére állítják be. |
| blockDefault | Az összes elemdeklarációra és típusdefinícióra alkalmazott blokkattribútum, ahol még nincs jelen, és az érték a blockDefault attribútum értékére van állítva. |
| finalDefault | Az összes elemdeklarációra és típusdefinícióra alkalmazott végső attribútum, ahol még nincs jelen, és az érték a finalDefault attribútum értékére van állítva. |
| targetNamespace | A célnévtérhez tartozó összetevőkre vonatkozó információk a metaadatokban lesznek tárolva. |
XML-sémagyűjtemény engedélyei
A következők végrehajtásához rendelkeznie kell a szükséges engedélyekkel:
Az XML-sémagyűjtemény létrehozása/betöltése
Az XML-sémagyűjtemény módosítása
Az XML-sémagyűjtemény elvetése
Az XML-sémagyűjtemény használatával beírhatja az xml-típus oszlopait, változóit és paramétereit, vagy használhatja tábla- vagy oszlopkorlátokban
Az SQL Server biztonsági modellje lehetővé teszi a CONTROL engedélyt minden objektumon. Az engedély jogosultja minden más engedélyt beszerez az objektumra. Az objektum tulajdonosa rendelkezik az objektum összes engedélyével is.
Az objektum CONTROL engedélyének tulajdonosa és jogosultja bármilyen engedélyt adhat az objektumra. Azok a felhasználók, akik nem a tulajdonos, és nem rendelkeznek CONTROL engedéllyel, továbbra is adhatnak engedélyt egy objektumhoz, ha a WITH GRANT OPTION beállítás meg van adva. Tegyük fel például, hogy az "A" felhasználó hivatkozási engedéllyel rendelkezik az S XML-sémagyűjteményhez a WITH GRANT LEHETŐSÉGgel, de az S-en nincs más engedély. Az "A" felhasználó b hivatkozási engedélyt adhat az S sémagyűjteményhez.
A biztonsági modell lehetővé teszi az XML-sémagyűjtemények létrehozását és használatát, illetve a tulajdonjog átadását egyik felhasználóról a másikra. Az alábbi cikkek az XML-sémagyűjtemény engedélyeit ismertetik.
Engedélyek megadása XML-sémagyűjteményhez
Ez a cikk azt ismerteti, hogyan adhat engedélyeket EGY XML-sémagyűjtemény létrehozásához, és hogyan adhat engedélyeket egy XML-sémacsoport-objektumhoz.
XML-sémagyűjtemény engedélyeinek visszavonása
Ez a cikk bemutatja, hogyan használhatók a visszavonási engedélyek az XML-sémagyűjtemények létrehozásának megakadályozására, valamint az XML-sémacsoport-objektumok engedélyeinek visszavonására.
XML-sémagyűjtemény engedélyeinek megtagadása
Ez a cikk bemutatja, hogyan tagadhatja meg az XML-sémagyűjtemények létrehozására és az XML-sémacsoport-objektumok engedélyének megtagadására vonatkozó engedélyeket.
Információk lekérése XML-sémákról és sémagyűjteményekről
Az XML-sémagyűjtemények felsorolása katalógusnézetben, sys.xml_schema_collections. Az XML-sémagyűjteményt sys a rendszer határozza meg. Tartalmazza az előre definiált névtereket, amelyek minden felhasználó által definiált XML-sémagyűjteményben használhatók anélkül, hogy explicit módon kellene betölteni őket. Ez a lista tartalmazza a xml, xs, xsi, fnés xdt. Két másik katalógusnézet is létezik sys.xml_schema_namespaces, amelyek az egyes XML-sémagyűjtemények összes névterét számba foglalják, és sys.xml_componentsamelyek az egyes XML-sémákban lévő összes XML-sémaösszetevőt számba foglalják.
A beépített függvény XML_SCHEMA_NAMESPACEschemaName, XmlSchemacollectionName, namespace-urixml-adattípus-példányt eredményez. Ez a példány XML-sématöredékeket tartalmaz egy XML-sémagyűjteményben található sémákhoz, kivéve az előre definiált XML-sémákat.
Az XML-sémagyűjtemények tartalmát az alábbi módokon sorolhatja fel:
Írjon Transact-SQL lekérdezéseket az XML-sémagyűjtemények megfelelő katalógusnézeteire.
Használja a beépített függvényt
XML_SCHEMA_NAMESPACE(). A függvény kimenetére XML-adattípus-metódusokat alkalmazhat. A mögöttes XML-sémák azonban nem módosíthatók.
Ezeket az alábbi példák szemléltetik.
Példák
Xml-sémagyűjtemény XML-névtereinek számbavétele
Használja a következő lekérdezést az XML-sémagyűjteményhez myCollection:
SELECT XSN.name
FROM sys.xml_schema_collections XSC JOIN sys.xml_schema_namespaces XSN
ON (XSC.xml_collection_id = XSN.xml_collection_id)
WHERE XSC.name = 'myCollection';
XML-sémagyűjtemény tartalmának számbavétele
Az alábbi utasítás számba adja az XML-sémagyűjtemény myCollection tartalmát a relációs sémán belül. dbo
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection');
A gyűjteményen belüli egyes XML-sémák xml-adattípus-példányokként érhetők el, ha a célnévteret a XML_SCHEMA_NAMESPACE() harmadik argumentumaként adja meg. Ez az alábbi példában látható.
Megadott séma kimenete XML-sémagyűjteményből
Az alábbi utasítás kiadja az XML-sémát a "pretend" célnévtérrel , amely az XML-sémagyűjteményen belül található a relációs sémában https://www.microsoft.com/was-booksmyCollection.
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection',
N'https://www.microsoft.com/was-books')
XML-sémák lekérdezése
Az XML-sémagyűjteményekbe betöltött XML-sémákat az alábbi módokon kérdezheti le:
Írjon Transact-SQL lekérdezéseket az XML-sémanévterek katalógusnézeteire.
Hozzon létre egy táblázatot, amely xml-adattípus-oszlopot tartalmaz az XML-sémák tárolásához és az XML-típusrendszerbe való betöltéséhez. Az XML-oszlopot az XML-adattípus módszereivel kérdezheti le. Ezen az oszlopon XML-indexet is létrehozhat. Ezzel a megközelítéssel azonban az alkalmazásnak konzisztenciát kell fenntartania az XML-oszlopban tárolt XML-sémák és az XML-típusrendszer között. Ha például elveti az XML-séma névterét az XML-típusrendszerből, a konzisztencia megőrzése érdekében azt is el kell helyeznie a táblából.