Teilen über


Interpretation von Anmerkungen – sql:mapped

Gilt für: SQL Server Azure SQL-Datenbank

XML-Massenladevorgang verarbeitet die sql:mapped-Anmerkung im XSD-Schema erwartungsgemäß, wenn das Zuordnungsschema "sql:mapped="false" für ein Element oder Attribut angibt, versucht XML Bulk Load nicht, die zugeordneten 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" kommentiert werden). Alle nicht zugeordneten Daten werden in die Überlaufspalte verschoben, wenn eine solche Spalte mithilfe von sql:overflow-field angegeben wird.

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, 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 funktionstüchtiges Beispiel

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