Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
I ett schema kan du identifiera en kolumn som en överflödeskolumn för att ta emot all oanvänd data från XML-dokumentet. Denna kolumn specificeras i schemat genom att använda sql:overflow-fältannoteringen . Det är möjligt att ha flera överflödeskolumner.
När en XML-nod (element eller attribut) för vilken det finns en sql:overflow-fältannotering kommer in i scope, aktiveras överflödeskolumnen och tar emot oanvänd data. När noden går utanför räckvidd är överflödeskolumnen inte längre aktiv och XML Bulk Load gör det tidigare överflödesfältet (om något) aktivt.
Eftersom XML Bulk Load lagrar data i överflödeskolumnen lagrar den också öppnings- och stängningstaggarna för det föräldraelement för vilket sql:overflow-field är definierat.
Till exempel beskriver följande schema Kunder<>- och <CustOrder-elementen>. Var och en av dessa element identifierar en överflödeskolumn:
<?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>
I schemat mappas Customer-elementet <> till Cust-tabellen och Order-elementet <> till CustOrder-tabellen.
Både <Kund-> och <Orderelementen> identifierar en överflödeskolumn. Således sparar XML Bulk Load alla icke-förbrukade barnelement och attribut för Kund-elementet<> i överflödeskolumnen i Cust-tabellen, samt alla oanvända barnelement och attribut för Order-elementet <> i överflödeskolumnen i CustOrder-tabellen.
För att testa ett fungerande prov
Spara schemat som ges i detta exempel som SampleSchema.xml.
Skapa följande tabeller:
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)) GOSpara följande exempel-XML-data som 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>För att köra XML Bulk Load, spara och kör detta Microsoft Visual Basic Scripting Edition (VBScript)-exempel som 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