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
Amikor az Transact-SQL OPENXML függvény segítségével XML dokumentumból az adatbázisba helyeznek be rekordokat, az összes fel nem használt adat a forrás XML dokumentumból egy oszlopban tárolható. Amikor annotált sémák segítségével adatokat gyűjt egy adatbázisból, megadhatod a sql:overflow-field attribútumot, hogy azonosítsd azt az oszlopot a táblázatban, ahol a túlcsordulási adatok tárolódnak. A sql:overflow-field attribútuma elemen meghatározható<>.
Ezt az adatot ezeken a következő módokon szerezzük vissza:
Az overflow oszlopban tárolt attribútumokat hozzáadják ahhoz az elemhez, amely tartalmazza a sql:overflow-field annotációt.
A gyermekelemek és leszármazottaik, amelyeket az adatbázis túlcsordulás oszlopában tárolnak, gyermekelemként kerülnek hozzáadásra a sémában kifejezetten meghatározott tartalom után. (A rend nem marad fenn.)
Példák
A következő példák alapján működő minták létrehozásához bizonyos követelményeknek kell megfelelned. További információért lásd: Az SQLXML futtatási követelmények példái.
A. Sql:overflow-field meghatározása egy elemhez
Ez a példa feltételezi, hogy a következő szkriptet futtattuk, így létezik egy Customers2 nevű tábla a tempdb adatbázisban:
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
Ezen felül létre kell hoznod egy virtuális könyvtárat a tempdb adatbázishoz – és egy sablon virtuális nevet sablon típusú, "template" nevű sablont.
A következő példában a leképezési séma visszanyeri a Customers2 tábla AddressOverflow oszlopában tárolt elfogyasztatlan adatokat:
<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>
Egy minta-XPath lekérdezés tesztelése a sémához
Másold le a fenti sémakódot, és illesztsd be egy szövegfájlba. Mentse el a fájlt Overflow.xml.
Másold le a következő sablont, és illesztsd be egy szövegfájlba. Mentsd a fájlt OverflowT.xml-ként ugyanabba a könyvtárba, ahol Overflow.xmlmentetted. A sablonban található lekérdezés kiválasztja a Customers2 táblában található rekordokat.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="Overflow.xml"> /Customers2 </sql:xpath-query> </ROOT>A leképezési sémához (Overflow.xml) megadott könyvtári út viszonyítja azt a könyvtárat, ahol a sablon mentő. Abszolút út is meghatározható, például:
mapping-schema="C:\SqlXmlTest\Overflow.xml"Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) a sablon végrehajtásához.
További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.
Az eredményhalmaz a következő:
<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>