共用方式為


註解解譯 - sql:overflow-field

適用於:SQL ServerAzure SQL 資料庫

在架構中,您可以將數據行識別為溢位數據行,以從 XML 檔接收所有未處理的數據。 此數據行是使用 sql:overflow-field 註釋在架構中指定。 可以有多個溢位數據行。

每當定義 sql:overflow 欄位批注的 XML 節點(元素或屬性)進入範圍時,就會啟動溢位數據行,並接收未處理的數據。 當節點超出範圍時,溢位數據行不再作用中,而 XML 大量載入會讓先前的溢位欄位(如果有的話)成為作用中。

當它將數據儲存在溢位數據行時,XML 大量載入也會儲存定義 sql:overflow-field 之父元素的開頭和結尾標記。

例如,下列架構描述 <Customers> 和 <CustOrder> 元素。 每個元素都會識別溢位資料行:

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

在架構中,Customer> 元素會對應至 Cust 數據表,而 <Order> 元素會對應至 CustOrder 數據表。<

<Customer> 和< Order> 元素都會識別溢位數據行。 因此,XML 大量載入會將 Customer> 元素的所有未使用子元素和屬性<儲存在 Cust 數據表的溢位數據行中,以及 CustOrder 資料表溢位數據行中 Order> 元素的所有未使用子元素和屬性。<

測試工作範例

  1. 將此範例中提供的架構儲存為 SampleSchema.xml。

  2. 建立這些資料表:

    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. 將下列範例 XML 資料儲存為SampleXMLData.xml:

    <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 大量載入,請將此Microsoft Visual Basic Scripting Edition (VBScript) 範例儲存並執行為 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