Bagikan melalui


Pemformatan XML sisi klien (SQLXML 4.0)

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance

Topik ini menyediakan informasi tentang pemformatan XML sisi klien. Pemformatan sisi klien mengacu pada pemformatan XML pada tingkat tengah.

Catatan

Topik ini menyediakan informasi tambahan tentang menggunakan klausa FOR XML di sisi klien, dan mengasumsikan Anda sudah terbiasa dengan klausa FOR XML. Untuk informasi selengkapnya tentang FOR XML, lihat Membuat XML Menggunakan FOR XML.

SQLNCLI11 adalah versi pertama penyedia SQL Server yang sepenuhnya memahami jenis data yang diperkenalkan di SQL Server 2005 (9.x). Perilaku untuk sisi klien UNTUK XML dengan penyedia SQLOLEDB akan memperlakukan jenis data xml sebagai string.

Penting

SQL Server Native Client (SNAC) tidak dikirim dengan:

  • SQL Server 2022 (16.x) dan versi yang lebih baru
  • SQL Server Management Studio 19 dan versi yang lebih baru

SQL Server Native Client (SQLNCLI atau SQLNCLI11) dan Penyedia Microsoft OLE DB warisan untuk SQL Server (SQLOLEDB) tidak direkomendasikan untuk pengembangan aplikasi baru.

Untuk proyek baru, gunakan salah satu driver berikut:

Untuk SQLNCLI yang dikirim sebagai komponen SQL Server Database Engine (versi 2012 hingga 2019), lihat pengecualian Siklus Hidup Dukungan ini.

Memformat Dokumen XML di Sisi Klien

Saat aplikasi klien menjalankan kueri berikut:

SELECT FirstName, LastName  
FROM   Person.Contact  
FOR XML RAW  

... hanya bagian kueri ini yang dikirim ke server:

SELECT FirstName, LastName  
FROM   Person.Contact  

Server menjalankan kueri dan mengembalikan set baris (yang berisi FirstName dan LastNamecolumns) ke klien. Tingkat tengah kemudian menerapkan transformasi FOR XML ke set baris dan mengembalikan pemformatan XML ke klien.

Demikian pula, saat Anda menjalankan kueri XPath, server mengembalikan set baris ke klien dan transformasi FOR XML EXPLICIT diterapkan ke set baris pada klien, menghasilkan pemformatan XML yang diinginkan.

Tabel berikut ini memperlihatkan mode yang bisa Anda tentukan dengan XML SISI klien.

Mode XML sisi klien Komentar
RAW Menghasilkan hasil yang identik ketika ditentukan di sisi klien atau sisi server UNTUK XML.
BERSARANG Mirip dengan mode FOR XML AUTO di sisi server.
EKSPLISIT Mirip dengan mode EKSPLISIT FOR XML sisi server.

Catatan

Jika Anda menentukan mode OTOMATIS dan meminta pemformatan XML sisi klien, seluruh kueri dikirim ke server; artinya, pemformatan XML terjadi di server. Ini dilakukan untuk kenyamanan, tetapi perhatikan bahwa mode NESTED mengembalikan nama tabel dasar sebagai nama elemen dalam dokumen XML yang dihasilkan. Beberapa aplikasi yang Anda tulis mungkin memerlukan nama tabel dasar. Misalnya, Anda dapat menjalankan prosedur tersimpan dan memuat data yang dihasilkan dalam Himpunan Data (di Microsoft .NET Framework), lalu membuat DiffGram untuk memperbarui data dalam tabel. Dalam kasus seperti itu, Anda memerlukan informasi tabel dasar dan Anda harus menggunakan mode NESTED.

Manfaat pemformatan XML sisi Klien

Berikut ini adalah beberapa manfaat memformat XML pada klien.

Jika Anda telah menyimpan prosedur di server yang mengembalikan satu set baris, Anda dapat meminta transformasi XML sisi klien untuk menghasilkan XML.

Misalnya, pertimbangkan prosedur tersimpan berikut. Prosedur ini mengembalikan nama depan dan belakang karyawan dari tabel Person.Contact di database AdventureWorks:

IF EXISTS (SELECT name FROM sysobjects  
   WHERE name = 'GetContacts' AND type = 'P')  
   DROP PROCEDURE GetContacts  
GO  
CREATE PROCEDURE GetContacts  
AS  
    SELECT   FirstName, LastName  
    FROM     Person.Contact  

Contoh templat XML berikut menjalankan prosedur tersimpan. Klausa FOR XML ditentukan setelah nama prosedur tersimpan.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <sql:query client-side-xml="1">  
    EXEC GetContacts FOR XML NESTED  
  </sql:query>  
</ROOT>  

Karena atribut client-side-xml diatur ke 1 (true) dalam templat, prosedur tersimpan dijalankan di server dan set baris dua kolom yang dikembalikan oleh server diubah menjadi XML pada tingkat tengah dan dikembalikan ke klien. (Hanya hasil parsial yang ditampilkan di sini.)

 <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Person.Contact FirstName="Gustavo" LastName="Achong" />   
  <Person.Contact FirstName="Catherine" LastName="Abel" />  
</ROOT>  

Catatan

Saat Anda menggunakan Penyedia SQLXMLOLEDB atau Kelas Terkelola SQLXML, Anda dapat menggunakan properti ClientSideXml untuk meminta pemformatan XML sisi klien.

Beban kerja lebih seimbang.

Karena klien melakukan pemformatan XML, beban kerja seimbang antara server dan klien, membebaskan server untuk melakukan hal-hal lain.

Mendukung Pemformatan XML sisi Klien

Untuk mendukung fungsionalitas pemformatan XML sisi klien, SQLXML menyediakan:

  • Penyedia SQLXMLOLEDB

  • Kelas Terkelola SQLXML

  • Dukungan templat XML yang disempurnakan

  • Properti SqlXmlCommand.ClientSideXml

    Anda dapat menentukan pemformatan sisi klien dengan mengatur properti kelas terkelola SQLXML ini ke true.

Dukungan Templat XML yang Disempurnakan

Dimulai dengan SQL Server 2005 (9.x), templat XML di SQL Server telah ditingkatkan dengan penambahan atribut client-side-xml . Jika atribut ini diatur ke true, XML diformat pada klien. Perhatikan bahwa atribut templat ini identik dalam fungsionalitas dengan properti ClientSideXML khusus Penyedia SQLXMLOLEDB.

Catatan

Jika Anda menjalankan templat XML dalam aplikasi ADO yang menggunakan Penyedia SQLXMLOLEDB, dan Anda menentukan atribut client-side-xml dalam templat dan properti ClientSideXML penyedia, nilai yang ditentukan dalam templat lebih diutamakan.

Lihat Juga

Arsitektur Pemformatan XML sisi Klien dan sisi Server (SQLXML 4.0)
UNTUK XML (SQL Server)
UNTUK Pertimbangan Keamanan XML (SQLXML 4.0)
Dukungan Tipe Data xml di SQLXML 4.0
Kelas Terkelola SQLXML
Pemformatan XML sisi klien vs. Sisi server (SQLXML 4.0)
Objek SqlXmlCommand (Kelas Terkelola SQLXML)
XML Data (SQL Server)