Freigeben über


sql:mapped (SQLXML 4.0)

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

  1. 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))  
    GO  
    
  2. Speichern Sie das schema, das in diesem Beispiel bereitgestellt wird, als SampleSchema.xml.

  3. 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>  
    
  4. 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>