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
Když jsou záznamy vloženy do databáze z XML dokumentu pomocí funkce Transact-SQL OPENXML, všechna nevyužitá data ze zdrojového XML dokumentu mohou být uložena ve sloupci. Když získáváte data z databáze pomocí anotovaných schémat, můžete specifikovat atribut sql:overflow-field, který identifikuje sloupec v tabulce, ve které jsou data přetečení uložena. Atribut sql:overflow-field lze zadat na <elementu>.
Tato data jsou pak získávána těmito způsoby:
Atributy uložené ve sloupci přetečení jsou přidány k prvku, který obsahuje anotaci sql:overflow-field .
Podprvky a jejich potomci, uložené ve sloupci přetečení v databázi, jsou přidávány jako podprvky podle obsahu explicitně specifikovaného ve schématu. (Žádný řád není zachován.)
Examples
Pro vytvoření pracovních vzorků podle následujících příkladů musíte splnit určité požadavky. Pro více informací viz Požadavky na spouštění SQLXML Examples.
A. Specifikace sql:overflow-pole pro prvek
Tento příklad předpokládá, že byl spuštěn následující skript tak, že v databázi tempdb existuje tabulka nazvaná Customers2:
USE tempdb
CREATE TABLE Customers2 (
CustomerID VARCHAR(10),
ContactName VARCHAR(30),
AddressOverflow NVARCHAR(500))
GO
INSERT INTO Customers2 VALUES (
'ALFKI',
'Joe',
'<Address>
<Address1>Maple St.</Address1>
<Address2>Apt. E105</Address2>
<City>Seattle</City>
<State>WA</State>
<Zip>98147</Zip>
</Address>')
GO
Kromě toho musíte vytvořit virtuální adresář pro tempdb databázi – a šablonu virtuálního názvu typu šablony s názvem "template".
V následujícím příkladu mapovací schéma získává nevyužitá data, která jsou uložena ve sloupci AddressOverflow tabulky Customers2:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Customers2" sql:overflow-field="AddressOverflow" >
<xsd:complexType>
<xsd:attribute name="CustomerID" type="xsd:integer"/>
<xsd:attribute name="ContactName" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Pro testování vzorku dotazu XPath proti schématu
Zkopírujte výše uvedený kód schématu a vložte ho do textového souboru. Uložte soubor jako Overflow.xml.
Zkopírujte následující šablonu a vložte ji do textového souboru. Ulož soubor jako OverflowT.xml do stejného adresáře, kde jsi uložil Overflow.xml. Dotaz v šabloně vybírá záznamy v tabulce Customers2.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="Overflow.xml"> /Customers2 </sql:xpath-query> </ROOT>Adresářová cesta určená pro mapovací schéma (Overflow.xml) je relativní k adresáři, ve kterém je šablona uložena. Absolutní cestu lze také specifikovat, například:
mapping-schema="C:\SqlXmlTest\Overflow.xml"Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k provedení šablony.
Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
Tady je sada výsledků:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Customers2 CustomerID="ALFKI" ContactName="Joe">
<Address1>Maple St.</Address1>
<Address2>Apt. E105</Address2>
<City>Seattle</City>
<State>WA</State>
<Zip>98147</Zip>
</Customers2>
</ROOT>