Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Wanneer records vanuit een XML-document in een database worden ingevoegd met behulp van de Transact-SQL OPENXML-functie, kunnen alle niet-gebruikte gegevens uit het bron-XML-document in een kolom worden opgeslagen. Wanneer je data uit een database ophaalt met behulp van geannoteerde schema's, kun je het attribuut sql:overflow-field specificeren om de kolom in de tabel te identificeren waarin de overflowgegevens zijn opgeslagen. Het sql:overflow-field attribuut kan worden gespecificeerd op element<>.
Deze gegevens worden vervolgens op de volgende manieren opgehaald:
Attributen die in de kolom overflow zijn opgeslagen, worden toegevoegd aan het element dat de sql:overflow-field annotatie bevat.
De kindelementen en hun nakomelingen, opgeslagen in de overflowkolom in de database, worden toegevoegd als kindelementen volgens de expliciet gespecificeerde inhoud in het schema. (Er is geen orde bewaard gebleven.)
Voorbeelden
Om werkmonsters te maken met de volgende voorbeelden, moet je aan bepaalde eisen voldoen. Voor meer informatie, zie Vereisten voor het uitvoeren van SQLXML-voorbeelden.
Eén. Specificeren van sql:overflow-veld voor een element
Dit voorbeeld gaat ervan uit dat het volgende script is uitgevoerd zodat er een tabel bestaat genaamd Customers2 in de tempdb-database:
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
Daarnaast moet je een virtuele directory aanmaken voor de tempdb-database en een sjabloon virtuele naam van sjabloontype genaamd "template".
In het volgende voorbeeld haalt het mappingschema de niet-gebruikte data op die is opgeslagen in de AddressOverflow-kolom van de Customers2-tabel:
<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>
Om een voorbeeld van een XPath-query te testen tegen het schema
Kopieer de bovenstaande schemacode en plak deze in een tekstbestand. Sla het bestand op als Overflow.xml.
Kopieer het volgende sjabloon en plak het in een tekstbestand. Sla het bestand op als OverflowT.xml in dezelfde map waar je Overflow.xmlhebt opgeslagen. De query in de template selecteert de records in de Customers2-tabel.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="Overflow.xml"> /Customers2 </sql:xpath-query> </ROOT>Het directorypad dat voor het mappingschema (Overflow.xml) is gespecificeerd is relatief tot de map waar het sjabloon wordt opgeslagen. Een absoluut pad kan ook worden gespecificeerd, bijvoorbeeld:
mapping-schema="C:\SqlXmlTest\Overflow.xml"Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het sjabloon uit te voeren.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.
Dit is de resultatenset:
<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>