Bagikan melalui


Mengambil Data yang Tidak Dikonsumsi Menggunakan sql:overflow-field (SQLXML 4.0)

Berlaku untuk: SQL ServerAzure SQL Database

Saat rekaman disisipkan dalam database dari dokumen XML dengan menggunakan fungsi TRANSACT-SQL OPENXML, semua data yang tidak dikonsumsi dari dokumen XML sumber dapat disimpan dalam kolom. Saat Anda mengambil data dari database dengan menggunakan skema anotasi, Anda dapat menentukan atribut sql:overflow-field untuk mengidentifikasi kolom dalam tabel tempat data luapan disimpan. Atribut sql:overflow-field dapat ditentukan pada <elemen>.

Data ini kemudian diambil dengan cara berikut:

  • Atribut yang disimpan dalam kolom luapan ditambahkan ke elemen yang berisi anotasi sql:overflow-field .

  • Elemen turunan dan turunannya, disimpan di kolom luapan dalam database, ditambahkan sebagai elemen turunan mengikuti konten yang secara eksplisit ditentukan dalam skema. (Tidak ada pesanan yang dipertahankan.)

Contoh

Untuk membuat sampel kerja menggunakan contoh berikut, Anda harus memenuhi persyaratan tertentu. Untuk informasi selengkapnya, lihat Persyaratan untuk Menjalankan Contoh SQLXML.

J. Menentukan sql:overflow-field untuk elemen

Contoh ini mengasumsikan bahwa skrip berikut telah dijalankan sehingga tabel bernama Customers2 ada di database tempdb:

USE tempdb  
CREATE TABLE Customers2 (  
CustomerID       VARCHAR(10),   
ContactName    VARCHAR(30),   
AddressOverflow    NVARCHAR(500))  
  
GO  
INSERT INTO Customers2 VALUES (  
'ALFKI',   
'Joe',  
'<Address>  
  <Address1>Maple St.</Address1>  
  <Address2>Apt. E105</Address2>  
  <City>Seattle</City>  
  <State>WA</State>  
  <Zip>98147</Zip>  
 </Address>')  
GO  

Selain itu, Anda harus membuat direktori virtual untuk database tempdb-dan nama virtual templat jenis templat bernama "template".

Dalam contoh berikut, skema pemetaan mengambil data yang tidak dikonsumsi yang disimpan di kolom AddressOverflow dari tabel Pelanggan2:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  
  <xsd:element name="Customers2" sql:overflow-field="AddressOverflow" >  
    <xsd:complexType>  
      <xsd:attribute name="CustomerID"  type="xsd:integer"/>  
      <xsd:attribute name="ContactName"  type="xsd:string" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
Untuk menguji sampel kueri XPath terhadap skema
  1. Salin kode skema di atas dan tempelkan ke dalam file teks. Simpan file sebagai Overflow.xml.

  2. Salin templat berikut dan tempelkan ke dalam file teks. Simpan file sebagai OverflowT.xml di direktori yang sama tempat Anda menyimpan Overflow.xml. Kueri dalam templat memilih rekaman dalam tabel Customers2.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="Overflow.xml">  
            /Customers2  
        </sql:xpath-query>  
    </ROOT>  
    

    Jalur direktori yang ditentukan untuk skema pemetaan (Overflow.xml) relatif terhadap direktori tempat templat disimpan. Jalur absolut juga dapat ditentukan, misalnya:

    mapping-schema="C:\SqlXmlTest\Overflow.xml"  
    
  3. Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.

    Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.

Berikut adalah hasilnya:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Customers2 CustomerID="ALFKI" ContactName="Joe">  
    <Address1>Maple St.</Address1>   
    <Address2>Apt. E105</Address2>   
    <City>Seattle</City>   
    <State>WA</State>   
    <Zip>98147</Zip>   
  </Customers2>  
</ROOT>