Aracılığıyla paylaş


SQL:Overflow-alan (SQLXML 4.0)

Bir şema, XML belgesinden tüm unconsumed veri almak için bir taşma sütunu olarak sütun tanımlayabilirsiniz.Bu sütun şemada kullanarak belirtilen sql:overflow-field Ek açıklama. Birden çok taşma sütun olması olasıdır.

Var olan bir XML düğümü her (öğe veya öznitelik) bir sql:overflow-field Ek açıklama tanımlanan kapsam girer, taşma sütun etkinleştirildikten ve unconsumed veri alır. Düğüm kapsam dışına çıktığında, taşma sütun artık etkin ve XML toplu yükleme, (varsa) önceki taşma alan yapar etkin.

Veri taşma alanında depolar, gibi sütun, XML toplu yükleme de açılış ve kapanış etiketlerinin üst öğenin kendisi için depolar sql:overflow-field tanımlanır.

Örneğin, aşağıdaki şemada açıklar <Müşteriler> ve <CustOrder> öğeleri. Her bu öğelerin bir taşma sütun tanımlar:

<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
 <xsd:annotation>
  <xsd:appinfo>
    <sql:relationship name="CustCustOrder"
        parent="Cust"
        parent-key="CustomerID"
        child="CustOrder"
        child-key="CustomerID" />
  </xsd:appinfo>
 </xsd:annotation>
 <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:sequence> 
             <xsd:element name="CustomerID" type="xsd:integer"/>
             <xsd:element name="CompanyName"  type="xsd:string"/>
             <xsd:element name="City" type="xsd:string"/>
             <xsd:element name="Order"
                          sql:relation="CustOrder"
                          sql:relationship="CustCustOrder"
                          sql:overflow-field="OverflowColumn">
               <xsd:complexType>
                 <xsd:attribute name="OrderID"/>
                 <xsd:attribute name="CustomerID"/>
               </xsd:complexType>
             </xsd:element>
          </xsd:sequence> 
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
</xsd:schema>

Şemada, <Müşteri> için özel öğeyi eşleyen tablo ve <Sipariş> öğeyi için CustOrder eşleyen tablo.

Her iki <Müşteri> ve <Sipariş> öğelerin bir taşma sütun tanımlar. Bu nedenle, XML toplu yükleme öğeleri ve öznitelikleri unconsumed alt kaydeder <Müşteri> öğe Müşt tablonun taşma sütunundaki tüm unconsumed alt öğeleri ve öznitelikleri <Sipariş> öğe CustOrder tablonun taşma sütunundaki.

Bir çalışan örneği sınamak için

  1. Bu örnekte, sağlanan şema SampleSchema.xml kaydedin.

  2. Bu tablo oluşturun:

    CREATE TABLE Cust (
              CustomerID     int         PRIMARY KEY,
              CompanyName    varchar(20) NOT NULL,
              City           varchar(20) DEFAULT 'Seattle',
              OverflowColumn nvarchar(200))
    GO
    CREATE TABLE CustOrder (
              OrderID        int         PRIMARY KEY,
              CustomerID     int         FOREIGN KEY REFERENCES
                                              Cust(CustomerID),
              OverflowColumn nvarchar(200))
    GO
    
  3. Aşağıdaki örnek XML verileri SampleXMLData.xml kaydedin:

    <ROOT>
      <Customers>
        <CustomerID>1111</CustomerID>
        <CompanyName>Hanari Carnes</CompanyName>
        <City><![CDATA[NY]]> </City>
          <Junk>garbage in overflow</Junk>
        <Order OrderID="1" />
        <Order OrderID="2" />
     </Customers>
     <Customers>
       <CustomerID>1112</CustomerID>
       <CompanyName>Toms Spezialitten</CompanyName>
       <City><![CDATA[LA]]> </City>
       <xyz><address>111 Maple, Seattle</address></xyz>   
       <Order OrderID="3" />
     </Customers>
       <Customers>
       <CustomerID>1113</CustomerID>
       <CompanyName>Victuailles en stock</CompanyName>
       <Order OrderID="4" />
      </Customers>
    </ROOT>
    
  4. XML toplu yükleme yürütmek için kaydedin ve bu yürütme Microsoft Visual Basic komut dosyası kullanan Edition (VBScript) örnek olarak 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