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
XML Bulk Load behandlar sql:mapped-annotationen i XSD-schemat som förväntat – det vill säga, om mappningsschemat specificerar sql:mapped="false" för något element eller attribut, försöker XML Bulk Load inte lagra associerad data i motsvarande kolumn.
XML Bulk Load ignorerar element och attribut som inte är mappade (antingen för att de inte beskrivs i schemat, eller för att de är annoterade i XSD-schemat med sql:mapped="false"). All omappad data går in i överflödeskolumnen, om en sådan kolumn anges med sql:overflow-field.
Tänk till exempel på det här XSD-schemat:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<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:attribute name="CustomerID" type="xsd:integer" />
<xsd:attribute name="CompanyName" type="xsd:string" />
<xsd:attribute name="City" type="xsd:string" />
<xsd:attribute name="HomePhone" type="xsd:string"
sql:mapped="false" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Eftersom HomePhone-attributet specificerar sql:mapped="false" mappar XML Bulk Load inte detta attribut till motsvarande kolumn. XSD-schemat identifierar en överflödeskolumn (OverflowColumn) där XML Bulk Load lagrar denna oanvända data.
För att testa ett fungerande prov
Skapa följande tabell i tempdb-databasen :
USE tempdb CREATE TABLE Cust (CustomerID int PRIMARY KEY, CompanyName varchar(20) NOT NULL, City varchar(20) DEFAULT 'Seattle', OverflowColumn nvarchar(200)) GOSpara schemat som ges i detta exempel som SampleSchema.xml.
Spara följande exempel-XML-data som SampleXMLData.xml:
<ROOT> <Customers CustomerID="1111" CompanyName="Sean Chai" City="NY" HomePhone="111-1111" /> <Customers CustomerID="1112" CompanyName="Dont Know" City="LA" HomePhone="222-2222" /> </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
Det här är motsvarande XDR-schema:
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
<ElementType name="ROOT" sql:is-constant="1">
<element type="Customers" />
</ElementType>
<ElementType name="Customers" sql:relation="Cust"
sql:overflow-field="OverflowColumn" >
<AttributeType name="CustomerID" />
<AttributeType name="CompanyName" />
<AttributeType name="City" />
<AttributeType name="HomePhone" />
<attribute type="CustomerID" />
<attribute type="CompanyName" />
<attribute type="City" />
<attribute type="HomePhone" sql:map-field="0" />
</ElementType>
</Schema>