Memperbarui Aplikasi ke SQL Server Native Client dari MDAC

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Penting

SQL Server Native Client (sering disingkat SNAC) telah dihapus dari SQL Server 2022 (16.x) dan SQL Server Management Studio 19 (SSMS). SQL Server Native Client (SQLNCLI atau SQLNCLI11) dan Penyedia Microsoft OLE DB warisan untuk SQL Server (SQLOLEDB) tidak disarankan untuk pengembangan aplikasi baru. Beralih ke Microsoft OLE DB Driver (MSOLEDBSQL) baru untuk SQL Server atau Microsoft ODBC Driver terbaru untuk SQL Server ke depannya. Untuk SQLNCLI yang dikirim sebagai komponen SQL Server Database Engine (versi 2012 hingga 2019), lihat pengecualian Siklus Hidup Dukungan ini.

Ada sejumlah perbedaan antara SQL Server Native Client dan Microsoft Data Access Components (MDAC; dimulai dengan Windows Vista, komponen akses data sekarang disebut Windows Data Access Components, atau Windows DAC). Meskipun keduanya menyediakan akses data asli ke database SQL Server, SQL Server Native Client telah dirancang khusus untuk mengekspos fitur baru SQL Server 2005 (9.x), sementara pada saat yang sama mempertahankan kompatibilitas mundur dengan versi sebelumnya.

Informasi dalam topik ini membantu memperbarui aplikasi MDAC (atau Windows DAC) Anda agar terkini dengan versi SQL Server Native Client yang disertakan dalam SQL Server 2005 (9.x). Untuk membantu Anda membuat aplikasi ini menjadi saat ini dengan versi SQL Server Native Client yang dikirim di SQL Server, lihat Memperbarui Aplikasi dari Klien Asli SQL Server 2005.

Catatan

SQL Server Native Client telah dihapus dari SQL Server 2022 (16.x).

Selain itu, meskipun MDAC berisi komponen untuk menggunakan OLE DB, ODBC, dan ActiveX Data Objects (ADO), SQL Server Native Client hanya mengimplementasikan OLE DB dan ODBC (meskipun ADO dapat mengakses fungsionalitas SQL Server Native Client).

SQL Server Native Client dan MDAC berbeda di area berikut lainnya:

  • Pengguna yang menggunakan ADO untuk mengakses penyedia Klien Asli SQL Server mungkin menemukan fungsionalitas pemfilteran yang lebih sedikit daripada saat mereka mengakses penyedia SQL OLE DB.

  • Jika aplikasi ADO menggunakan SQL Server Native Client dan mencoba memperbarui kolom komputasi, kesalahan akan dilaporkan. Dengan MDAC, pembaruan diterima tetapi diabaikan.

  • SQL Server Native Client adalah satu file pustaka tautan dinamis (DLL) mandiri. Antarmuka yang terekspos secara publik telah dijaga seminimal mungkin, baik untuk memudahkan distribusi, maupun untuk membatasi paparan keamanan.

  • Hanya antarmuka OLE DB dan ODBC yang didukung.

  • Penyedia SQL Server Native Client OLE DB dan nama driver ODBC berbeda dari yang digunakan dengan MDAC.

  • Fungsionalitas yang dapat diakses pengguna yang disediakan oleh komponen MDAC tersedia saat menggunakan SQL Server Native Client. Ini termasuk, tetapi tidak terbatas pada, berikut ini: pengumpulan koneksi, dukungan ADO, dan dukungan kursor klien. Ketika salah satu fitur ini digunakan, SQL Server Native Client hanya menyediakan konektivitas database. MDAC menyediakan fungsionalitas seperti pelacakan, kontrol manajemen, dan penghitung kinerja.

  • Aplikasi dapat menggunakan layanan inti OLE DB dengan SQL Server Native Client, tetapi jika menggunakan mesin kursor OLE DB, mereka harus menggunakan opsi kompatibilitas jenis data untuk menghindari potensi masalah yang mungkin muncul karena mesin kursor tidak memiliki pengetahuan tentang jenis data SQL Server 2005 (9.x) baru.

  • SQL Server Native Client mendukung akses ke database SQL Server sebelumnya.

  • SQL Server Native Client tidak berisi integrasi XML. SQL Server Native Client mendukung SELECT ... UNTUK kueri XML, tetapi tidak mendukung fungsionalitas XML lainnya. Namun, SQL Server Native Client memang mendukung jenis data xml yang diperkenalkan di SQL Server 2005 (9.x).

  • SQL Server Native Client mendukung konfigurasi pustaka jaringan sisi klien hanya menggunakan atribut string koneksi. Jika Anda memerlukan konfigurasi pustaka jaringan yang lebih lengkap, Anda harus menggunakan Pengelola Konfigurasi SQL Server.

  • SQL Server Native Client tidak kompatibel dengan odbcbcp.dll. Aplikasi yang menggunakan API ODBC dan bcp harus dibangun kembali untuk ditautkan dengan sqlncli11.lib untuk menggunakan SQL Server Native Client.

  • SQL Server Native Client tidak didukung dari penyedia Microsoft OLE DB untuk ODBC (MSDASQL). Jika Anda menggunakan driver MDAC SQLODBC dengan driver MSDASQL atau MDAC SQLODBC dengan ADO, gunakan OLE DB di SQL Server Native Client..

  • String koneksi MDAC memungkinkan nilai Boolean (benar) untuk kata kunci Trusted_Koneksi ion. Klien Asli SQL Server string koneksi harus menggunakan ya atau tidak.

  • Perubahan kecil telah terjadi pada peringatan dan kesalahan. Peringatan dan kesalahan yang dikembalikan oleh server sekarang mempertahankan tingkat keparahan yang sama ketika diteruskan ke SQL Server Native Client. Anda harus memastikan bahwa Anda telah menguji aplikasi Anda secara menyeluruh jika Anda bergantung pada perangkap peringatan dan kesalahan tertentu.

  • SQL Server Native Client memiliki pemeriksaan kesalahan yang lebih ketat daripada MDAC, yang berarti bahwa beberapa aplikasi yang tidak sesuai secara ketat dengan spesifikasi ODBC dan OLE DB mungkin berperilaku berbeda. Misalnya, penyedia SQLOLEDB tidak memberlakukan aturan bahwa nama parameter harus dimulai dengan '@' untuk parameter hasil, tetapi penyedia SQL Server Native Client OLE DB tidak.

  • SQL Server Native Client berperilaku berbeda dari MDAC sehubungan dengan koneksi yang gagal. Misalnya, MDAC mengembalikan nilai properti yang di-cache untuk koneksi yang telah gagal, sedangkan SQL Server Native Client melaporkan kesalahan ke aplikasi panggilan.

  • SQL Server Native Client tidak menghasilkan peristiwa Visual Studio Analyzer, tetapi menghasilkan peristiwa pelacakan Windows.

  • SQL Server Native Client tidak dapat digunakan dengan perfmon. Perfmon adalah alat Windows yang hanya dapat digunakan dengan DSN yang menggunakan driver MDAC SQLODBC yang disertakan dengan Windows.

  • Ketika SQL Server Native Client tersambung ke SQL Server 2005 (9.x) dan versi yang lebih baru, kesalahan server 16947 dikembalikan sebagai SQL_ERROR. Kesalahan ini terjadi ketika pembaruan atau penghapusan yang diposisikan gagal memperbarui atau menghapus baris. Dengan MDAC saat menyambungkan ke versi SQL Server apa pun, kesalahan server 16947 dikembalikan sebagai peringatan (SQL_SUCCESS_WITH_INFO).

  • SQL Server Native Client mengimplementasikan antarmuka IDBDataSourceAdmin , yang merupakan antarmuka OLE DB opsional yang sebelumnya tidak diimplementasikan, tetapi hanya metode CreateDataSource dari antarmuka opsional ini yang diimplementasikan. Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini.

  • Penyedia SQL Server Native Client OLE DB mengembalikan sinonim dalam kumpulan baris skema TABLES dan TABLE_INFO, dengan TABLE_TYPE diatur ke SYNONYM.

  • Mengembalikan nilai jenis data varchar(max), nvarchar(max), varbinary(max), xml, udt, atau jenis objek besar lainnya tidak dapat dikembalikan ke versi klien yang lebih lama dari SQL Server 2005 (9.x). Jika Anda ingin menggunakan jenis ini sebagai nilai pengembalian, Anda harus menggunakan SQL Server Native Client.

  • MDAC memungkinkan pernyataan berikut dijalankan pada awal transaksi manual dan implisit, tetapi SQL Server Native Client tidak. Mereka harus dijalankan dalam mode autocommit.

    • Semua operasi teks lengkap (DDL indeks dan katalog)

    • Semua operasi database (membuat database, mengubah database, menghilangkan database)

    • Konfigurasi ulang

    • Matikan

    • Matikan

    • Cadangan

  • Ketika aplikasi MDAC tersambung ke SQL Server, jenis data yang diperkenalkan di SQL Server 2005 (9.x) akan muncul sebagai jenis data yang kompatibel dengan SQL Server 2000 (8.x) seperti yang ditunjukkan dalam tabel berikut.

    Jenis SQL Server 2005 Jenis SQL Server 2000
    varchar(max) text
    nvarchar(maks) ntext
    varbinary(max) gambar
    udt varbinary
    xml ntext

    Pemetaan jenis ini memengaruhi nilai yang dikembalikan untuk metadata kolom. Misalnya, kolom teks memiliki ukuran maksimum 2.147.483.647, tetapi SQL Server Native Client ODBC melaporkan ukuran maksimum kolom varchar(max) sebagai SQL_SS_LENGTH_UNLIMITED, dan SQL Server Native Client OLE DB melaporkan ukuran maksimum kolom varchar(maks) sebagai 2.147.483.647 atau -1, tergantung pada platform.

  • Klien Asli SQL Server memungkinkan ambiguitas dalam string koneksi (misalnya, beberapa kata kunci dapat ditentukan lebih dari sekali, dan kata kunci yang bertentangan dapat diizinkan dengan resolusi berdasarkan posisi atau prioritas) karena alasan kompatibilitas mundur. Rilis SQL Server Native Client di masa mendatang mungkin tidak mengizinkan ambiguitas dalam string koneksi. Ini adalah praktik yang baik saat memodifikasi aplikasi untuk menggunakan SQL Server Native Client untuk menghilangkan dependensi apa pun pada ambiguitas string koneksi.

  • Jika Anda menggunakan panggilan ODBC atau OLE DB untuk memulai transaksi, ada perbedaan perilaku antara SQL Server Native Client dan MDAC; transaksi akan segera dimulai dengan SQL Server Native Client, tetapi transaksi akan dimulai setelah akses database pertama menggunakan MDAC. Ini dapat memengaruhi perilaku prosedur dan batch tersimpan karena SQL Server mengharuskan @@TRANCOUNT sama setelah prosedur batch atau tersimpan menyelesaikan eksekusi seperti saat batch atau prosedur tersimpan dimulai.

  • Dengan SQL Server Native Client, ITransactionLocal::BeginTransaction akan menyebabkan transaksi segera dimulai. Dengan MDAC, awal transaksi tertunda sampai aplikasi menjalankan pernyataan yang memerlukan transaksi dalam mode transaksi implisit. Untuk informasi selengkapnya, lihat SET IMPLICIT_TRANSACTIONS (Transact-SQL).

  • Anda mungkin mengalami kesalahan saat menggunakan driver Klien Asli SQL Server dengan System.Data.Odbc untuk mengakses komputer server SQL Server yang mengekspos jenis atau fitur data baru khusus SQL Server. System.Data.Odbc menyediakan implementasi ODBC generik dan kemudian tidak mengekspos fungsionalitas atau ekstensi khusus vendor. (Driver SQL Server Native Client diperbarui untuk secara asli mendukung fitur SQL Server terbaru.) Untuk mengatasi masalah ini, Anda dapat kembali ke MDAC, atau bermigrasi ke System.Data.SqlClient.

Klien Asli SQL Server dan dukungan MDAC membaca isolasi transaksi yang diterapkan menggunakan penerapan versi baris, tetapi hanya SQL Server Native Client yang mendukung isolasi transaksi rekam jepret. (Dalam istilah pemrograman, isolasi transaksi yang diterapkan baca menggunakan penerapan versi baris sama dengan transaksi yang diterapkan baca.).

Lihat Juga

Membangun Aplikasi dengan SQL Server Native Client