Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
XML-Massenladevorgang verarbeitet die sql:mapped Anmerkung im XSD-Schema erwartungsgemäß, d. h., wenn das Zuordnungsschema für ein Element oder Attribut angibt sql:mapped="false" , versucht XML Bulk Load nicht, die zugehörigen Daten in der entsprechenden Spalte zu speichern.
Xml-Massenladevorgang ignoriert Elemente und Attribute, die nicht zugeordnet sind (entweder weil sie nicht im Schema beschrieben werden oder weil sie im XSD-Schema mit sql:mapped="false"). Alle nicht zugeordneten Daten werden in die Überlaufspalte verschoben, wenn eine solche Spalte mithilfe von sql:overflow-field.
Betrachten Sie z. B. dieses XSD-Schema:
<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>
Da das HomePhone-Attribut angibt sql:mapped="false", wird dieses Attribut nicht der entsprechenden Spalte zugeordnet. Das XSD-Schema identifiziert eine Überlaufspalte (OverflowColumn), in der XML-Massenladevorgang diese nicht verarbeiteten Daten speichert.
So testen Sie ein Arbeitsbeispiel
Erstellen Sie die folgende Tabelle in der tempdb-Datenbank :
USE tempdb CREATE TABLE Cust (CustomerID int PRIMARY KEY, CompanyName varchar(20) NOT NULL, City varchar(20) DEFAULT 'Seattle', OverflowColumn nvarchar(200)) GOSpeichern Sie das schema, das in diesem Beispiel bereitgestellt wird, als SampleSchema.xml.
Speichern Sie die folgenden XML-Beispieldaten als 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>Zum Ausführen des XML-Massenladevorgangs speichern und ausführen Sie dieses Beispiel für Microsoft Visual Basic Scripting Edition (VBScript) 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
Dies ist das entsprechende 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>