Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL databáze v Microsoft Fabric
Jak je popsáno v článku XML (Transact-SQL), SQL Server poskytuje nativní úložiště dat XML prostřednictvím datového typu XML . Volitelně můžete schémata XSD přidružit k proměnné nebo sloupci typu XML prostřednictvím kolekce schémat XML. Kolekce schémat XML ukládá importovaná schémata XML a pak se používá k provedení následujících kroků:
Ověření instancí XML
Zadejte data XML, protože jsou uložená v databázi.
Kolekce schématu XML je entita metadat jako tabulka v databázi. Můžete je vytvářet, upravovat a odstraňovat. Schémata zadaná v příkazu CREATE XML SCHEMA COLLECTION (Transact-SQL) se automaticky importují do nově vytvořeného objektu kolekce schémat XML. Do existujícího objektu kolekce v databázi můžete importovat další schémata nebo součásti schématu pomocí příkazu ALTER XML SCHEMA COLLECTION (Transact-SQL).
Jak je popsáno v článku Typed vs. Untyped XML, XML uložený ve sloupci nebo proměnné, ke kterému je schéma přidruženo, se označuje jako typ XML , protože schéma poskytuje nezbytné informace o datovém typu pro data instance. SQL Server používá tyto informace o typu k optimalizaci úložiště dat.
Modul pro zpracování dotazů také používá schéma ke kontrole typů a k optimalizaci dotazů a úprav dat.
SQL Server také používá přidruženou kolekci schémat XML s typem xml k ověření instance XML. Pokud instance XML vyhovuje schématu, databáze umožňuje, aby byla instance uložena v systému s informacemi o jejich typu. V opačném případě instanci odmítne.
Vnořenou funkci XML_SCHEMA_NAMESPACE můžete použít k načtení kolekce schématu uložené v databázi. Další informace naleznete v tématu Zobrazení uložené kolekce schémat XML.
Kolekci schémat XML můžete použít také k zadání proměnných, parametrů a sloupců XML.
DDL pro správu kolekcí schémat
V databázi můžete vytvářet kolekce schémat XML a přidružit je k proměnným a sloupcům typu XML . Ke správě kolekcí schémat v databázi poskytuje SQL Server následující příkazy DDL:
CREATE XML SCHEMA COLLECTION (Transact-SQL) Importuje součásti schématu do databáze.
ALTER XML SCHEMA COLLECTION (Transact-SQL) Upraví komponenty schématu v existující kolekci schémat XML.
DROP XML SCHEMA COLLECTION (Transact-SQL) Odstraní kompletní kolekci schématu XML a všechny její komponenty.
Chcete-li použít kolekci schémat XML a schémata, která obsahuje, musíte nejprve vytvořit kolekci a schémata pomocí příkazu CREATE XML SCHEMA COLLECTION. Po vytvoření kolekce schématu můžete vytvořit proměnné a sloupce typu XML a přidružit k nim kolekci schématu. Po vytvoření kolekce schématu se v metadatech ukládají různé součásti schématu. Kolekci ALTER XML SCHEMA COLLECTION můžete také použít k přidání dalších komponent do existujících schémat nebo přidání nových schémat do existující kolekce.
Chcete-li odstranit kolekci schématu, použijte příkaz DROP XML SCHEMA COLLECTION. Tím se zahodí všechna schémata obsažená v kolekci a odebere se objekt kolekce. Než budete moct kolekci schématu odstranit, musí být splněny podmínky popsané v drop XML SCHEMA COLLECTION (Transact-SQL).
Porozumět komponentám schématu
Při použití příkazu CREATE XML SCHEMA COLLECTION se do databáze importují různé součásti schématu. Součástí schématu jsou prvky schématu, atributy a definice typů. Když použijete příkaz DROP XML SCHEMA COLLECTION, odeberete úplnou kolekci.
FUNKCE CREATE XML SCHEMA COLLECTION ukládá součásti schématu do různých systémových tabulek.
Představte si například následující schéma:
<?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>
Předchozí schéma ukazuje různé typy komponent, které lze uložit v databázi. Patří mezi ně SomeAttribute, SomeType, OrderType, CustomerType, Customer, OrderCustomerIDOrderIDOrderDate, RequiredDate, a .ShippedDate
Kategorie komponent
Součásti schématu uložené v databázi spadají do následujících kategorií:
ELEMENT
ATTRIBUT
TYPE (pro jednoduché nebo složité typy)
SKUPINA ATRIBUTŮ
MODELGROUP
Například:
SomeAttributeje komponenta ATTRIBUTE.SomeTypeaOrderTypeCustomerTypejsou to komponenty TYPE.Customerje komponenta ELEMENT.
Při importu schématu do databáze SQL Server neukládá samotné schéma. Místo toho SQL Server ukládá různé jednotlivé komponenty. To znamená, že značka Schémata <> není uložena, jsou zachovány pouze komponenty, které jsou definovány v něm. Všechny prvky schématu se nezachovají. <Pokud značka Schema> obsahuje atributy, které určují výchozí chování jeho součástí, tyto atributy se během procesu importu přesunou do komponent schématu, jak je znázorněno v následující tabulce.
| Název atributu | Chování |
|---|---|
| attributeFormDefault | Atribut form použitý ve všech deklaracích atributů ve schématu, kde ještě není přítomen, a její hodnota je nastavena na hodnotu atributu attributeFormDefault. |
| elementFormDefault | Atribut form použitý u všech deklarací elementů ve schématu, kde ještě není přítomen, a jeho hodnota je nastavena na hodnotu atribuelementFormDefault. |
| blockDefault | Atribut block je použit u všech deklarací elementů a definic typů, kde ještě není přítomen, a hodnota je nastavena na hodnotu atributu blockDefault. |
| finalDefault | Poslední atribut použitý u všech deklarací elementů a definic typů, kde ještě není k dispozici, a hodnota je nastavena na hodnotu finalDefault atributu. |
| targetNamespace | Informace o komponentách, které patří do cílového oboru názvů, jsou uloženy v metadatech. |
Oprávnění ke kolekci schémat XML
K provedení následujících kroků musíte mít potřebná oprávnění:
Vytvoření nebo načtení kolekce schémat XML
Úprava kolekce schémat XML
Vypusťte kolekci schémat XML.
Použijte kolekci schémat XML pro zadání xml typu sloupců, proměnných a parametrů nebo ji použijte v omezeních tabulky nebo sloupce.
Model zabezpečení SQL Serveru umožňuje oprávnění CONTROL ke každému objektu. Příjemce tohoto oprávnění získá všechna ostatní oprávnění k objektu. Vlastník objektu má také všechna oprávnění k objektu.
Vlastník a příjemce oprávnění CONTROL u objektu mohou udělit jakékoli oprávnění k objektu. Uživatel, který není vlastníkem a nemá oprávnění CONTROL, může udělit oprávnění k objektu, pokud je specifikována MOŽNOST UDĚLENÍ OPRÁVNĚNÍ. Předpokládejme například, že uživatel A má oprávnění REFERENCES pro kolekci schémat XML S prostřednictvím možnosti GRANT OPTION, ale žádná další oprávnění na S. Uživatel A by mohl udělit uživateli B oprávnění REFERENCES pro kolekci schémat S.
Model zabezpečení také umožňuje oprávnění vytvářet a používat kolekce schémat XML nebo přenášet vlastnictví od jednoho uživatele do jiného. Následující články popisují oprávnění kolekce schémat XML.
Udělení oprávnění pro kolekci schémat XML
Tento článek popisuje, jak udělit oprávnění k vytvoření kolekce schématu XML a jak udělit oprávnění k objektu kolekce schématu XML.
Odvolání oprávnění pro kolekci schémat XML
Tento článek popisuje, jak lze odvolat oprávnění k zabránění vytvoření kolekce schématu XML a jak odvolat oprávnění k objektu kolekce schématu XML.
Odepřít oprávnění pro kolekci schémat XML
Tento článek popisuje, jak odepřít oprávnění k vytvoření kolekce schématu XML a odepřít oprávnění k objektu kolekce schématu XML.
Získání informací o schématech XML a kolekcích schémat
Kolekce schémat XML jsou znázorněny v zobrazení katalogu sys.xml_schema_collections. Kolekce sys schémat XML je definována systémem. Obsahuje předdefinované obory názvů, které lze použít ve všech uživatelsky definovaných kolekcích schémat XML, aniž byste je museli načíst explicitně. Tento seznam obsahuje obory názvů pro xml, xs, xsi, fn a xdt. Dvě další zobrazení katalogu jsou sys.xml_schema_namespaces, která vyčísluje všechny obory názvů v rámci každé kolekce schématu XML a sys.xml_components, která vytvoří výčet všech komponent schématu XML v rámci každého schématu XML.
Integrovaná funkce XML_SCHEMA_NAMESPACE, schemaName, XmlSchemacollectionName, namespace-uriposkytuje instanci datového typu XML . Tato instance obsahuje fragmenty schématu XML pro schémata obsažená v kolekci schémat XML s výjimkou předdefinovaných schémat XML.
Obsah kolekce schématu XML můžete vypsat následujícími způsoby:
Napište Transact-SQL dotazy na příslušná zobrazení katalogu pro kolekce schémat XML.
Použijte předdefinované funkce
XML_SCHEMA_NAMESPACE(). Metody datového typu XML můžete použít na výstupu této funkce. Základní schémata XML ale nemůžete upravit.
Tyto příklady jsou znázorněny v následujících příkladech.
Examples
Vyjmenovat obory názvů XML v kolekci schémat XML
Pro kolekci myCollectionschémat XML použijte následující dotaz:
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';
Vytvoření výčtu obsahu kolekce schémat XML
Následující příkaz vypíše obsah kolekce myCollection schématu XML v rámci relačního schématu, dbo.
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection');
Jednotlivá schémata XML v kolekci lze získat jako instance datového typu XML zadáním cílového oboru názvů jako třetí argument pro XML_SCHEMA_NAMESPACE(). To je ukázáno v následujícím příkladu.
Výstup zadaného schématu z kolekce schémat XML
Následující příkaz vypíše schéma XML s fiktivním cílovým oborem názvů https://www.microsoft.com/was-books z kolekce schémat XML v rámci relačního schématu, dbo.
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection',
N'https://www.microsoft.com/was-books')
Dotazování schémat XML
Schémata XML, která jste načetli do kolekcí schémat XML, můžete dotazovat následujícími způsoby:
Zapište Transact-SQL dotazy na zobrazení katalogu pro obory názvů schématu XML.
Vytvořte tabulku obsahující sloupec datového typu XML pro uložení schémat XML a také je načtěte do systému typů XML. Sloupec XML můžete dotazovat pomocí metod datového typu XML . V tomto sloupci můžete také vytvořit index XML. Při tomto přístupu však musí aplikace udržovat konzistenci mezi schématy XML uloženými ve sloupci XML a systémem typů XML. Pokud například přehodíte obor názvů schématu XML ze systému typů XML, musíte ho také odstranit z tabulky, aby se zachovala konzistence.