주석 해석 - sql:mapped

적용 대상: SQL Server Azure SQL 데이터베이스

XML 대량 로드는 XSD 스키마의 sql:mapped 주석을 예상대로 처리합니다. 즉, 매핑 스키마가 모든 요소 또는 특성에 대해 sql:mapped="false" 를 지정하는 경우 XML 대량 로드는 연결된 데이터를 해당 열에 저장하려고 시도하지 않습니다.

XML 대량 로드는 매핑되지 않은 요소와 특성을 무시합니다(스키마에 설명되지 않았거나 sql:mapped="false"를 사용하여 XSD 스키마에 주석이 추가되었기 때문). 매핑되지 않은 모든 데이터는 sql:overflow-field를 사용하여 이러한 열을 지정하는 경우 오버플로 열로 이동합니다.

예를 들어 다음 XSD 스키마를 참조하십시오.

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

HomePhone 특성은 sql:mapped="false"를 지정하므로 XML 대량 로드는 이 특성을 해당 열에 매핑하지 않습니다. XSD 스키마는 XML 대량 로드가 이 연결되지 않은 데이터를 저장하는 오버플로 열(OverflowColumn)을 식별합니다.

작업 예제를 테스트하려면

  1. 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. 이 예에서 제공하는 스키마를 SampleSchema.xml로 저장합니다.

  3. 다음 예제 XML 데이터를 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. XML 대량 로드를 실행하려면 다음 Microsoft VBScript(Visual Basic Scripting Edition) 예제를 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  
    

다음은 동등한 XDR 스키마입니다.

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