Freigeben über


sql:mapped (SQLXML 4.0)

Das XML-Massenladen verarbeitet die sql:mapped-Anmerkung im XSD-Schema erwartungsgemäß, das heißt, wenn das Zuordnungsschema für ein Element oder Attribut sql:mapped="false" angibt, versucht das XML-Massenladen nicht, die damit verknüpften Daten in der entsprechenden Spalte zu speichern.

Das XML-Massenladen ignoriert Elemente und Attribute, die nicht zugeordnet sind (weil sie entweder nicht im Schema beschrieben sind oder im XSD-Schema die Anmerkung sql:mapped="false" aufweisen). Alle nicht zugeordneten Daten werden in die Überlaufspalte übertragen, sofern eine solche Spalte mit sql:overflow-field angegeben wurde.

Das folgende XSD-Schema ist ein Beispiel dafür:

<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 sql:mapped="false" angibt, ordnet das XML-Massenladen dieses Attribut nicht der entsprechenden Spalte zu. Das XSD-Schema identifiziert eine Überlaufspalte (OverflowColumn), in der das XML-Massenladen diese nicht verbrauchten Daten speichert.

So testen Sie ein funktionstüchtiges Beispiel

  1. Erstellen Sie die folgende Tabelle in der Datenbank tempdb:

    USE tempdb
    CREATE TABLE Cust
              (CustomerID     int         PRIMARY KEY,
               CompanyName    varchar(20) NOT NULL,
               City           varchar(20) DEFAULT 'Seattle',
               OverflowColumn nvarchar(200))
    GO
    
  2. Speichern Sie das in diesem Beispiel bereitgestellte Schema unter dem Dateinamen SampleSchema.xml.

  3. Speichern Sie die folgenden XML-Daten unter dem Dateinamen 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>
    
  4. Speichern Sie dieses Microsoft Visual Basic Scripting Edition (VBScript)-Beispiel unter dem Dateinamen Sample.vbs, und führen Sie es aus, um das XML-Massenladen auszuführen:

    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>