Bagikan melalui


Interpretasi Anotasi - sql:mapped

Berlaku untuk: SQL ServerAzure SQL Database

BEBAN Massal XML memproses anotasi sql:mapped dalam skema XSD seperti yang diharapkan-yaitu, jika skema pemetaan menentukan sql:mapped="false" untuk elemen atau atribut apa pun, Muatan Massal XML tidak mencoba menyimpan data terkait di kolom yang sesuai.

Beban Massal XML mengabaikan elemen dan atribut yang tidak dipetakan (baik karena tidak dijelaskan dalam skema, atau karena dianotasikan dalam skema XSD dengan sql:mapped="false"). Semua data yang tidak dipetakan masuk ke kolom luapan, jika kolom tersebut ditentukan dengan menggunakan sql:overflow-field.

Misalnya, pertimbangkan skema XSD ini:

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

Karena atribut HomePhone menentukan sql:mapped="false", Beban Massal XML tidak memetakan atribut ini ke kolom yang sesuai. Skema XSD mengidentifikasi kolom luapan (OverflowColumn) di mana Beban Massal XML menyimpan data yang tidak dikonsumsi ini.

Untuk menguji sampel yang berfungsi

  1. Buat tabel berikut di database 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. Simpan skema yang disediakan dalam contoh ini sebagai SampleSchema.xml.

  3. Simpan contoh data XML berikut sebagai 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. Untuk menjalankan Pemuatan Massal XML, simpan dan jalankan contoh Microsoft Visual Basic Scripting Edition (VBScript) ini sebagai 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  
    

Ini adalah skema XDR yang setara:

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