Memperbarui Aplikasi ke Driver OLE DB untuk SQL Server dari MDAC

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

Unduh driver OLE DB

Ada sejumlah perbedaan antara Driver OLE DB untuk SQL Server dan Komponen Akses Data Microsoft (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, Driver OLE DB untuk SQL Server telah dirancang untuk mengekspos fitur baru SQL Server, sementara pada saat yang sama mempertahankan kompatibilitas mundur dengan versi sebelumnya.

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

Driver OLE DB untuk SQL Server dan MDAC berbeda di area berikut lainnya:

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

  • Jika aplikasi ADO menggunakan Driver OLE DB untuk SQL Server dan mencoba memperbarui kolom komputasi, kesalahan akan dilaporkan. Dengan MDAC, pembaruan diterima tetapi diabaikan.

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

  • Hanya antarmuka OLE DB yang didukung.

  • Driver OLE DB untuk nama SQL Server berbeda dari nama yang digunakan dengan MDAC.

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

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

  • Driver OLE DB untuk SQL Server mendukung akses ke database SQL Server sebelumnya.

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

  • Driver OLE DB untuk SQL Server 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.

  • String koneksi MDAC memungkinkan nilai Boolean (benar) untuk kata kunci Trusted_Koneksi ion. Driver OLE DB untuk 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 Driver OLE DB untuk SQL Server. Anda harus memastikan bahwa Anda telah menguji aplikasi Anda secara menyeluruh jika Anda bergantung pada perangkap peringatan dan kesalahan tertentu.

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

  • Driver OLE DB untuk SQL Server bereaksi berbeda dari MDAC mengenai koneksi yang gagal. Misalnya, MDAC mengembalikan nilai properti yang di-cache untuk koneksi yang gagal, sedangkan Driver OLE DB untuk SQL Server melaporkan kesalahan ke aplikasi panggilan.

  • Driver OLE DB untuk SQL Server tidak menghasilkan peristiwa Visual Studio Analyzer, tetapi sebaliknya menghasilkan peristiwa pelacakan Windows.

  • Driver OLE DB untuk SQL Server 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 Driver OLE DB untuk SQL Server 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).

  • Driver OLE DB untuk SQL Server 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.

  • Driver OLE DB untuk SQL Server 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 Driver OLE DB untuk SQL Server.

  • MDAC memungkinkan pernyataan berikut dijalankan pada awal transaksi manual dan implisit, tetapi Driver OLE DB untuk SQL Server 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 Driver OLE DB untuk SQL Server melaporkan ukuran maksimum kolom varchar(maks) sebagai 2.147.483.647 atau -1, tergantung pada platform.

  • Driver OLE DB untuk 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 Driver OLE DB di masa mendatang untuk SQL Server mungkin tidak mengizinkan ambiguitas dalam string koneksi. Ini adalah praktik yang baik saat memodifikasi aplikasi untuk menggunakan Driver OLE DB untuk SQL Server untuk menghilangkan dependensi apa pun pada ambiguitas string koneksi.

  • Jika Anda menggunakan panggilan OLE DB untuk memulai transaksi, ada perbedaan perilaku antara Driver OLE DB untuk SQL Server dan MDAC; transaksi akan segera dimulai dengan Driver OLE DB untuk SQL Server, 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 Driver OLE DB untuk SQL Server, 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).

Driver OLE DB untuk SQL Server dan MDAC mendukung isolasi transaksi berkomitmen baca menggunakan penerapan versi baris, tetapi hanya Driver OLE DB untuk SQL Server 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 Driver OLE DB untuk SQL Server