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
Microsoft SQLXML 4.0 SP1 mencakup berbagai pembaruan dan penyempurnaan. Topik ini meringkas pembaruan dan menyediakan tautan ke informasi yang lebih rinci, jika tersedia. SQLXML 4.0 SP1 menyediakan penyempurnaan tambahan untuk mendukung jenis data baru yang diperkenalkan di SQL Server 2008 (10.0.x). Topik ini mencakup subjek berikut:
Menginstal SQLXML 4.0 SP1
Masalah Penginstalan Berdampingan
SQLXML 4.0 dan MSXML
Mendistribusikan ulang SQLXML 4.0
Dukungan untuk SQL Server Native Client
Dukungan untuk Jenis Data yang Diperkenalkan di SQL Server 2005 (9.x)
Muat Massal XML Perubahan untuk SQLXML 4.0
Perubahan Kunci Registri untuk SQLXML 4.0
Masalah Migrasi
Menginstal SQLXML 4.0 SP1
Sebelum SQL Server 2008 (10.0.x), SQLXML 4.0 dirilis dengan SQL Server dan merupakan bagian dari penginstalan default semua versi SQL Server kecuali untuk SQL Server Express. Dimulai dengan SQL Server 2008 (10.0.x), versi terbaru SQLXML (SQLXML 4.0 SP1) tidak lagi disertakan dalam SQL Server. Untuk menginstal SQLXML 4.0 SP1, unduh dari Lokasi Penginstalan untuk SQLXML 4.0 SP1.
File SQLXML 4.0 SP1 diinstal di lokasi berikut:
%PROGRAMFILES%\SQLXML 4.0\
Catatan
Semua pengaturan registri yang sesuai untuk SQLXML 4.0 dibuat sebagai bagian dari proses penginstalan.
Untuk memungkinkan aplikasi SQLXML 32-bit berjalan di bawah Windows pada Windows (WOW64) pada sistem operasi Windows 64-bit, jalankan paket SQLXML 4.0 SP1 64-bit, bernama sqlxml4.msi, yang dapat ditemukan di Pusat Unduhan.
Menghapus instalasi SQLXML 4.0 SP1
Kunci registri bersama ada antara SQLXML 3.0 SP3, SQLXML 4.0 dan SQLXML 4.0 SP1. Jika versi SQLXML yang lebih baru dihapus instalasinya di komputer yang sama yang berisi SQLXML 3.0 SP3, Anda mungkin perlu menginstal ulang SQLXML 3.0 SP3.
Masalah Penginstalan Berdampingan
Proses penginstalan untuk SQLXML 4.0 tidak menghapus file yang diinstal oleh versi SQLXML sebelumnya. Oleh karena itu, Anda dapat memiliki DLL untuk beberapa penginstalan SQLXML yang khas versi yang berbeda di komputer Anda. Anda dapat menjalankan penginstalan secara berdampingan. SQLXML 4.0 mencakup PROGID independen versi dan tergantung versi. Semua aplikasi produksi harus menggunakan PROGID yang bergantung pada versi.
SQLXML 4.0 SP1 dan MSXML
SQLXML 4.0 tidak menginstal MSXML. SQLXML 4.0 menggunakan MSXML 6.0, yang diinstal sebagai bagian dari penginstalan SQL Server 2005 (9.x) atau yang lebih baru.
Mendistribusikan ulang SQLXML 4.0 SP1
Anda dapat mendistribusikan SQLXML 4.0 SP1 menggunakan paket alat penginstal yang dapat didistribusikan ulang. Salah satu cara untuk menginstal beberapa paket dalam apa yang tampaknya bagi pengguna untuk menjadi satu instalasi adalah dengan menggunakan teknologi chainer dan bootstrapper. Untuk informasi selengkapnya, lihat Menulis Paket Bootstrapper Kustom untuk Visual Studio 2005 dan Menambahkan Prasyarat Kustom.
Jika aplikasi Anda menargetkan platform selain platform yang dikembangkan, Anda dapat mengunduh versi sqlncli.msi untuk x64, Itanium, dan x86 dari Pusat Unduhan Microsoft.
Ada juga program penginstalan redistribusi terpisah untuk MSXML 6.0 (msxml6.msi). Ini dapat ditemukan di CD penginstalan SQL Server di lokasi berikut:
%CD%\Setup\
File penginstalan ini dapat digunakan untuk menginstal MSXML 6.0 langsung dari CD. Mereka juga dapat digunakan untuk mendistribusikan ulang MSXML 6.0 secara bebas bersama dengan SQLXML 4.0 SP1 dengan aplikasi kustom Anda sendiri.
Anda juga perlu mendistribusikan ulang SQL Server Native Client jika Anda menggunakannya sebagai penyedia data dengan aplikasi Anda. Untuk informasi selengkapnya, lihat Menginstal SQL Server Native Client.
Dukungan untuk SQL Server Native Client
SQLXML 4.0 mendukung penyedia SQLOLEDB dan SQL Server Native Client. Disarankan agar Anda menggunakan versi penyedia SQL Server Native Client dan SQL Server yang sama karena SQL Server Native Client dikembangkan untuk mendukung jenis data baru yang dikirimkan di server, seperti jenis data Date, Time, DateTime2, dan dateTimeOffset di SQL Server 2008 (10.0.x) dan didukung oleh SQL Server Native Client.
Catatan
SQL Server Native Client telah dihapus di SQL Server 2022 (16.x).
SQL Server Native Client adalah teknologi akses data yang diperkenalkan di SQL Server 2005 (9.x). Ini menggabungkan Penyedia SQLOLEDB dan Driver SQLODBC ke dalam satu pustaka tautan dinamis asli (DLL), sekaligus menyediakan fungsionalitas baru yang terpisah dan berbeda dari Komponen Akses Data Microsoft (MDAC).
SQL Server Native Client dapat digunakan untuk membuat aplikasi baru atau meningkatkan aplikasi yang ada yang perlu memanfaatkan fitur yang diperkenalkan di SQL Server yang tidak didukung oleh SQLOLEDB dan SQLODBC di MDAC dan Microsoft Windows. Misalnya, SQL Server Native Client diperlukan untuk fitur SQLXML sisi klien, seperti FOR XML, untuk menggunakan jenis data xml . Untuk informasi selengkapnya, lihat Pemformatan XML sisi klien (SQLXML 4.0), Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0, dan Pemrograman Klien Asli SQL Server.
Catatan
SQLXML 4.0 tidak sepenuhnya kompatibel mundur dengan SQLXML 3.0. Karena beberapa perbaikan bug dan perubahan fungsional lainnya, terutama penghapusan dukungan SQLXML ISAPI, Anda tidak dapat menggunakan direktori virtual IIS dengan SQLXML 4.0. Meskipun sebagian besar aplikasi akan berjalan dengan modifikasi kecil, Anda harus mengujinya sebelum memasukkannya ke dalam produksi dengan SQLXML 4.0.
Dukungan untuk Jenis Data yang Diperkenalkan di SQL Server 2005 dan SQL Server 2008
SQL Server 2005 (9.x) memperkenalkan jenis data xml , dan SQLXML 4.0 mendukung jenis data xml . Untuk informasi selengkapnya, lihat Dukungan Tipe Data xml di SQLXML 4.0.
Untuk contoh cara menggunakan jenis data xml di SQLXML saat memetakan tampilan XML, memuat XML secara massal atau menjalankan pembaruan XML, lihat contoh yang disediakan dalam topik berikut.
SQL Server 2008 (10.0.x) memperkenalkan jenis data Date, Time, DateTime2, dan DateTimeOffset . SQLXML 4.0 SP1 akan mengaktifkan empat jenis data baru ini sebagai jenis skalar bawaan ketika digunakan dengan Penyedia OLE DB Klien Asli SQL Server (SQLNCLI11), yang dikirim di SQL Server 2012 (11.x).
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.
Perubahan Pemuatan Massal XML untuk SQLXML 4.0 SP1
Untuk SQLXML 4.0, bidang luapan SkemaGen dibuat menggunakan jenis data xml . Untuk informasi selengkapnya, lihat SQL Server XML Bulk Load Object Model.
Jika sebelumnya Anda telah membuat aplikasi Microsoft Visual Basic dan ingin menggunakan SQLXML 4.0, Anda harus mengkombinasikan ulang aplikasi dengan referensi ke Xblkld4.dll.
Untuk aplikasi Visual Basic Scripting Edition, Anda harus mendaftarkan DLL yang ingin Anda gunakan. Dalam contoh berikut, jika Anda menentukan PROGID independen versi, aplikasi bergantung pada DLL terakhir yang terdaftar:
set objBulkLoad = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")Catatan
PROGID yang bergantung pada versi adalah SQLXMLBulkLoad.SQLXMLBulkLoad.4.0.
Perubahan Kunci Registri untuk SQLXML 4.0
Di SQLXML 4.0, kunci registri telah berubah dari rilis sebelumnya menjadi yang berikut:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\TemplateCacheSize
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\SchemaCacheSize
Anda harus mengubah pengaturan jika Anda ingin kunci ini berlaku untuk SQLXML 4.0.
Selain itu, SQLXML 4.0 memperkenalkan kunci registri berikut:
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\ReportErrorsWithSQLInfoSecara default, SQLXML 4.0 mengembalikan informasi kesalahan asli yang disediakan oleh OLE DB dan SQL Server alih-alih kesalahan SQLXML tingkat tinggi (seperti halnya dalam versi SQLXML sebelumnya). Jika Anda tidak menginginkan perilaku ini, nilai kunci registri jenis DWORD ini harus diatur ke 0 (defaultnya adalah 1).
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\FORXML_GenerateGUIDBraces
Secara default, SQLXML mengembalikan nilai GUID SQL Server tanpa kurung kurawal penutup. Jika Anda ingin nilai GUID dikembalikan dengan kurung kurawal (misalnya, {beberapa GUID}), nilai kunci registri ini harus diatur ke 1 (defaultnya adalah 0).
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\SQL2000CompatMode
Secara default, ketika pengurai XML memuat data, spasi kosong dinormalisasi sesuai dengan aturan XML 1.0. Ini mengalihkan hilangnya beberapa karakter spasi kosong dalam data Anda. Dengan demikian, representasi tekstual data Anda mungkin tidak sama setelah penguraian, meskipun secara semantik datanya sama.
Kunci ini diperkenalkan sehingga Anda dapat memilih untuk menyimpan karakter spasi kosong dalam data. Jika Anda menambahkan kunci registri ini dan mengatur nilainya ke 0, karakter spasi kosong (LF, CR, dan tab) di XML dikembalikan yang dikodekan jika ada nilai atribut. Dalam kasus nilai elemen, hanya CR yang dikembalikan yang dikodekan.
Contohnya:
CREATE TABLE T( Col1 int, Col2 nvarchar(100)); GO -- Insert data with tab, line feed and carriage return). INSERT INTO T VALUES (1, 'This is a tab . This is a line feed and CR more text'); GO -- Test this query (without the registry key). SELECT * FROM T FOR XML AUTO; -- This is the result (no encoding of special characters). <?xml version="1.0" encoding="utf-8" ?> <r> <T Col1="1" Col2="This is a tab . This is a line feed and CR more text"/> </r> -- Now add registry key with value 0 and execute the query again. -- Note the encoding for carriage return, line-feed and tab in the attribute value. <?xml version="1.0" encoding="utf-8" ?> <r> <T Col1="1" Col2="This is a tab . This is a line feed and CR more text"/> </r> -- Update the query and specify ELEMENTS directive SELECT * FROM T FOR XML AUTO, ELEMENTS -- Only the carriage return is returned encoded. <?xml version="1.0" encoding="utf-8" ?> <r> <T> <Col1>1</Col1> <Col2>This is a tab . This is a line feed and CR more text</Col2> </T> </r>
Masalah Migrasi
Berikut ini adalah masalah yang dapat memengaruhi migrasi aplikasi SQLXML warisan Anda ke SQLXML 4.0.
Kueri ADO dan SQLXML 4.0
Dalam versi SQLXML sebelumnya, dukungan untuk eksekusi kueri berbasis URL menggunakan direktori virtual IIS dan filter ISAPI SQLXML disediakan. Untuk aplikasi yang menggunakan SQLXML 4.0, dukungan ini tidak lagi tersedia.
Sebagai gantinya, kueri, templat, dan pembaruan SQLXML dapat dijalankan dengan menggunakan ekstensi SQLXML ke ActiveX Data Objects (ADO) yang pertama kali diperkenalkan di Microsoft Data Access Components (MDAC) 2.6 dan yang lebih baru.
Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.
Dukungan untuk SQLXML 3.0 ISAPI dan Jenis Data yang Diperkenalkan di SQL Server 2005
Karena dukungan ISAPI telah dihapus dari SQLXML 4.0, jika solusi Anda memerlukan fitur pengetikan data yang ditingkatkan yang diperkenalkan di SQL Server 2005 (9.x) seperti jenis data xml atau jenis data yang ditentukan pengguna (UDT) dan akses berbasis Web, Anda harus menggunakan solusi lain seperti kelas terkelola SQLXML atau jenis handler HTTP lainnya, seperti Native XML Web Services untuk SQL Server 2005.
Sebagai alternatif, jika Anda tidak memerlukan ekstensi jenis ini, Anda dapat terus menggunakan instalasi SQLXML 3.0 untuk menyambungkan ke SQL Server 2005 (9.x) dan SQL Server 2008 (10.0.x). Dukungan ISAPI SQLXML 3.0 akan bekerja terhadap versi yang lebih baru ini tetapi tidak mendukung atau mengenali jenis data xml atau dukungan jenis UDT yang diperkenalkan di SQL Server 2005 (9.x).
Xml Memuat Perubahan Keamanan Secara Massal untuk File Sementara
Untuk SQLXML 4.0 dan SQL Server, izin file Beban Massal XML diberikan kepada pengguna yang menjalankan operasi beban massal. Izin Baca dan Tulis diwariskan dari sistem file. Dalam rilis SQLXML dan SQL Server sebelumnya, Beban Massal XML di bawah SQLXML akan membuat file sementara yang tidak diamankan dan dapat dibaca oleh siapa pun.
Masalah Migrasi untuk XML Sisi Klien
Karena perubahan dalam mesin eksekusi, SQL Server mungkin mengembalikan nilai yang berbeda dalam metadata untuk tabel dasar daripada yang akan dikembalikan jika kueri FOR XML dijalankan di bawah SQL Server 2000 (8.x). Dalam kasus di mana hal ini terjadi, pemformatan sisi klien dari hasil kueri FOR XML akan memiliki output yang berbeda tergantung pada versi mana kueri dijalankan.
Jika kueri FOR XML dijalankan dari sisi klien menggunakan SQLXML 3.0 melalui kolom tipe data xml , data dalam hasil akan kembali sebagai string yang sepenuhnya berhak. Di SQLXML 4.0, jika SQL Server Native Client (SQLNCLI11) ditentukan sebagai penyedia, data akan dikembalikan sebagai XML.