sql:mapped(SQLXML 4.0)

XML 대량 로드는 XSD 스키마의 sql:mapped 주석을 예상대로 처리합니다. 즉, 매핑 스키마에서 임의의 요소 또는 특성에 대해 sql:mapped="false"를 지정하는 경우 XML 대량 로드는 관련 데이터를 해당 열에 저장하지 않습니다.

XML 대량 로드는 스키마에 기술되지 않았거나 XSD 스키마에서 sql:mapped="false"로 주석이 지정되어 있어 매핑되지 않은 요소 및 특성을 무시합니다. 매핑되지 않은 모든 데이터는 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>