Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server
Azure 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)