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
In een schema kun je een kolom identificeren als een overflowkolom om alle niet-verbruikte data uit het XML-document te ontvangen. Deze kolom wordt in het schema gespecificeerd door gebruik te maken van de sql:overflow-field annotation. Het is mogelijk om meerdere overloopkolommen te hebben.
Telkens wanneer een XML-knooppunt (element of attribuut) waarvoor een sql:overflow-veldannotatie is gedefinieerd in scope komt, wordt de overflowkolom geactiveerd en ontvangt ongebruikte data. Wanneer de node buiten scope valt, is de overflowkolom niet langer actief en maakt XML Bulk Load het vorige overflowveld (indien aanwezig) actief.
Omdat XML Bulk Load gegevens opslaat in de overflowkolom, slaat het ook de openings- en sluittags op van het ouderelement waarvoor sql:overflow-field is gedefinieerd.
Het volgende schema beschrijft bijvoorbeeld de <Customers-> en <CustOrder-elementen> . Elk van deze elementen identificeert een overloopkolom:
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="CustCustOrder"
parent="Cust"
parent-key="CustomerID"
child="CustOrder"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="ROOT" sql:is-constant="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Customers"
sql:relation="Cust"
sql:overflow-field="OverflowColumn">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CustomerID" type="xsd:integer"/>
<xsd:element name="CompanyName" type="xsd:string"/>
<xsd:element name="City" type="xsd:string"/>
<xsd:element name="Order"
sql:relation="CustOrder"
sql:relationship="CustCustOrder"
sql:overflow-field="OverflowColumn">
<xsd:complexType>
<xsd:attribute name="OrderID"/>
<xsd:attribute name="CustomerID"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
In het schema wordt het <Customer-element> naar de Cust-tabel gemapt en het <Order-element> naar de CustOrder-tabel.
Zowel de Klant-> als<<de Order-elementen> identificeren een overloopkolom. Zo slaat XML Bulk Load alle niet-gebruikte kindelementen en attributen van het <Customer-element> op in de overflowkolom van de Cust-tabel, en alle niet-gebruikte kindelementen en attributen van het <Order-element> in de overflowkolom van de CustOrder-tabel.
Om een werkmonster te testen
Sla het schema dat in dit voorbeeld wordt gegeven op als SampleSchema.xml.
Maak deze tabellen:
CREATE TABLE Cust ( CustomerID int PRIMARY KEY, CompanyName varchar(20) NOT NULL, City varchar(20) DEFAULT 'Seattle', OverflowColumn nvarchar(200)) GO CREATE TABLE CustOrder ( OrderID int PRIMARY KEY, CustomerID int FOREIGN KEY REFERENCES Cust(CustomerID), OverflowColumn nvarchar(200)) GOSla de volgende voorbeeld-XML-gegevens op als SampleXMLData.xml:
<ROOT> <Customers> <CustomerID>1111</CustomerID> <CompanyName>Hanari Carnes</CompanyName> <City><![CDATA[NY]]> </City> <Junk>garbage in overflow</Junk> <Order OrderID="1" /> <Order OrderID="2" /> </Customers> <Customers> <CustomerID>1112</CustomerID> <CompanyName>Toms Spezialitten</CompanyName> <City><![CDATA[LA]]> </City> <xyz><address>111 Maple, Seattle</address></xyz> <Order OrderID="3" /> </Customers> <Customers> <CustomerID>1113</CustomerID> <CompanyName>Victuailles en stock</CompanyName> <Order OrderID="4" /> </Customers> </ROOT>Om XML Bulk Load uit te voeren, sla en voer dit voorbeeld van Microsoft Visual Basic Scripting Edition (VBScript) uit als Sample.vbs:
set objBL = CreateObject("SQLXMLBulkLoad.SQLXMLBulkload.4.0") objBL.ConnectionString = "provider=SQLOLEDB;data source=localhost;database=tempdb;integrated security=SSPI" objBL.ErrorLogFile = "c:\error.log" objBL.CheckConstraints = True objBL.Execute "c:\SampleSchema.xml", "c:\SampleXMLData.xml" set objBL=Nothing