Bagikan melalui


Perbedaan versi utama

Artikel ini menjelaskan perubahan mencolok antara Microsoft OLE DB Driver 19 untuk SQL Server dan versi yang lebih lama.

Petunjuk / Saran

MSOLEDBSQL19 (Microsoft OLE DB Driver 19 untuk SQL Server) adalah driver OLE DB yang direkomendasikan saat ini. Ini mendukung TDS 8.0 dan fitur keamanan modern. Versi 19.2.0+ juga mendukung TLS 1.3. Gunakan Provider=MSOLEDBSQL19 dalam string koneksi Anda.

Ringkasan perubahan

Area Versi 18 dan yang lebih lama Versi 19+
Pengaturan enkripsi default (Encrypt) no (tidak ada enkripsi atau server yang dapat memerlukan enkripsi) Mandatory (diperlukan enkripsi)
Encrypt jenis properti VT_BOOL VT_BSTR
Encrypt nilai yang valid no/yes no/yes/true/false/Optional/Mandatory/Strict
Validasi sertifikat Dilewati saat klien menetapkan Encrypt=no Selalu dievaluasi ketika enkripsi terjadi
Nama pengandar MSOLEDBSQL MSOLEDBSQL19
CLSID MSOLEDBSQL_CLSID (warisan) MSOLEDBSQL_CLSID (diperbarui di header)

Peringatan

Autentikasi ActiveDirectoryPassword tidak digunakan lagi. Jika Anda bermigrasi dari versi 18 ke 19 dan menggunakan Authentication=ActiveDirectoryPassword, rencanakan untuk bermigrasi ke metode autentikasi yang lebih aman. Lihat Metode autentikasi yang tidak digunakan lagi untuk alternatif.

Perubahan properti enkripsi

Mengenkripsi perubahan jenis properti

Properti SSPROP_INIT_ENCRYPT driver berubah dari VT_BOOL ke VT_BSTR.

Rangkaian koneksi Nilai versi 18 Nilai versi 19
Penyedia: Encrypt no/yes no/yes/true/false/Optional/Mandatory/Strict
IDataInitialize: Use Encryption for Data true/false no/yes/true/false/Optional/Mandatory/Strict

Pemetaan nilai:

Pengaturan Nilai yang setara Perilaku
Optional no, false Tidak terenkripsi kecuali server memerlukannya
Mandatory (standar) yes, true Koneksi terenkripsi diperlukan
Strict (tidak setara) Enkripsi TDS 8.0; memerlukan SQL Server 2022+

Petunjuk / Saran

Dimulai dengan versi 19.2.0, koneksi TDS 8.0 dapat menggunakan TLS 1.3 saat menyambungkan ke SQL Server 2022 atau yang lebih baru. Properti ServerCertificate juga ditambahkan dalam versi ini. Untuk informasi selengkapnya, lihat dukungan TLS 1.3.

Untuk kompatibilitas mundur, versi 19 menerima semua nilai versi 18 (yes/no) selain nilai baru ().Optional/Mandatory/Strict

Perilaku enkripsi default

Versi Bawaan Result
18 dan yang lebih lama no Koneksi tidak terenkripsi secara default
19+ Mandatory Koneksi dienkripsi secara default

Untuk memulihkan perilaku versi 18, tambahkan salah satu opsi ini ke string koneksi Anda:

  • Penyedia: Encrypt=Optional;
  • IDataInitialize: Use Encryption for Data=Optional;

Perilaku validasi sertifikat

Scenario Versi 18 Versi 19+
Set klien Encrypt=no, server tidak memaksa enkripsi Tidak ada validasi Tidak ada validasi
Set Encrypt=noklien, server memaksa enkripsi Trust Server Certificate Diabaikan Trust Server Certificate Dievaluasi
Set klien Encrypt=yes Trust Server Certificate Dievaluasi Trust Server Certificate Dievaluasi

Catatan kompatibilitas

Klien versi 19 yang menggunakan pengaturan default gagal tersambung ketika server memaksa enkripsi dan menggunakan sertifikat yang tidak tepercaya. Perbarui pengaturan Anda Trust Server Certificate atau gunakan sertifikat tepercaya.

TrustServerCertificate tidak dihapus dalam versi 19. Opsi masih berfungsi. Versi 18 mengabaikan pengaturan ini ketika Encrypt diatur ke no, bahkan ketika enkripsi paksa server. Versi 19 sekarang mengevaluasi TrustServerCertificate dalam semua skenario terenkripsi.

Driver versi 19, sebelum 19.4.1, memiliki masalah penginstal yang dapat mengatur TrustServerCertificate opsi registri ke no pada sistem yang sebelumnya telah menginstal v18. Ketika masalah ini terjadi, driver akan menggunakan pengaturan registri yang lebih aman, yang dapat membuat opsi string koneksi tampaknya tidak berpengaruh. Masalah ini diselesaikan dalam versi 19.4.1. Instalasi baru v19 (tanpa v18 ada) selalu default dengan benar opsi registri ke yes. Untuk informasi lebih lanjut, lihat Pengaturan Registri .

Format kata kunci berbeda menurut antarmuka:

  • String koneksi penyedia tidak menggunakan spasi: TrustServerCertificate=yes;
  • String koneksi IDataInitialize menggunakan spasi: Trust Server Certificate=yes;

Untuk informasi selengkapnya, lihat Enkripsi dan validasi sertifikat di OLE DB.

Pengaturan registri untuk Enkripsi Protokol Paksa

Pengaturan registri Force Protocol Encryption menggunakan nilai numerik yang memetakan ke mode enkripsi:

Nilai registri Mode enkripsi Description
0 Optional Enkripsi hanya jika server memerlukannya
1 Mandatory Enkripsi diperlukan
2 Strict Enkripsi TDS 8.0

Driver menggunakan opsi paling aman antara pengaturan registri dan properti koneksi. Untuk lokasi kunci registri, lihat Pengaturan registri.

Perubahan nama driver

Versi 19 mendukung penginstalan berdampingan dengan versi 18. Nama driver mencakup nomor versi utama untuk diferensiasi.

Antarmuka Versi 18 Versi 19
Kata kunci penyedia MSOLEDBSQL MSOLEDBSQL19
Konstanta CLSID MSOLEDBSQL_CLSID MSOLEDBSQL_CLSID (diperbarui dalam msoledbsql.h)
Nama tampilan UI Driver Microsoft OLE DB untuk SQL Server Microsoft OLE DB Driver 19 untuk SQL Server

Langkah-langkah migrasi

  1. Sertakan header yang diperbarui msoledbsql.h dalam proyek Anda.
  2. Untuk IDBInitialize: Tidak ada perubahan yang diperlukan (CLSID diperbarui di header).
  3. Untuk IDataInitialize: Ubah Provider=MSOLEDBSQL ke Provider=MSOLEDBSQL19.
  4. Untuk alat UI (SSMS, properti tautan data): Pilih Microsoft OLE DB Driver 19 untuk SQL Server.

Contoh konfigurasi koneksi

Versi 18 (sebelumnya):

Provider=MSOLEDBSQL;Server=myserver;Database=mydb;Trusted_Connection=yes;

Versi 19 (setelah):

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Trusted_Connection=yes;

Versi 19 dengan pengaturan enkripsi eksplisit:

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Encrypt=Mandatory;TrustServerCertificate=no;

Versi 19 dengan enkripsi ketat (TDS 8.0):

Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Encrypt=Strict;ServerCertificate=C:\certs\server.cer;

Properti versi 19 baru

Versi 19 memperkenalkan properti untuk validasi sertifikat yang ditingkatkan dengan Strict mode enkripsi.

HostNameInCertificate (v19.0.0+)

Menentukan nama host untuk divalidasi terhadap sertifikat TLS/SSL server. Gunakan properti ini ketika nama server dalam string koneksi berbeda dari Nama Umum (CN) sertifikat atau Nama Alternatif Subjek (SAN).

Antarmuka Harta benda
Kata kunci penyedia HostNameInCertificate
Kata kunci IDataInitialize Host Name In Certificate
Properti OLE DB SSPROP_INIT_HOST_NAME_CERTIFICATE

Nota

Properti ini diabaikan ketika Trust Server Certificate diaktifkan. Ketika Encrypt=Strict, sertifikat selalu divalidasi.

ServerCertificate (v19.2.0+)

Menentukan jalur ke file sertifikat (format PEM, DER, atau CER) untuk pencocokan sertifikat yang tepat. Driver membandingkan sertifikat ini dengan sertifikat server selama jabat tangan TLS.

Antarmuka Harta benda
Kata kunci penyedia ServerCertificate
Kata kunci IDataInitialize Server Certificate
Properti OLE DB SSPROP_INIT_SERVER_CERTIFICATE

Penting

ServerCertificate hanya dapat digunakan ketika Encrypt=Strict. Mencoba menggunakannya dengan Mandatory atau Optional enkripsi menghasilkan kesalahan koneksi.

Metode autentikasi yang tidak digunakan lagi

ActiveDirectoryPassword

Metode ActiveDirectoryPassword autentikasi (autentikasi Kata Sandi ID Microsoft Entra) tidak digunakan lagi. Autentikasi ini didasarkan pada pemberian OAuth 2.0 Resource Owner Password Credentials (ROPC), yang tidak kompatibel dengan autentikasi multifaktor (MFA) dan menimbulkan risiko keamanan.

Peringatan

Microsoft menjauh dari alur autentikasi berisiko tinggi ini untuk melindungi pengguna dari serangan berbahaya. Rencanakan untuk bermigrasi ke metode autentikasi yang lebih aman sebelum opsi ini dihapus. Untuk informasi selengkapnya, lihat Merencanakan autentikasi multifaktor wajib untuk Azure.

Scenario Autentikasi yang direkomendasikan Kata kunci string koneksi
Konteks pengguna interaktif Autentikasi multifaktor Authentication=ActiveDirectoryInteractive
Aplikasi yang berjalan di Azure Identitas yang Dikelola Authentication=ActiveDirectoryMSI
Layanan/daemon tanpa pengguna Principal Layanan Authentication=ActiveDirectoryServicePrincipal

Untuk informasi selengkapnya, lihat Menggunakan ID Microsoft Entra.

Troubleshooting

Koneksi gagal dengan kesalahan validasi sertifikat

Gejala: Koneksi gagal dengan kesalahan validasi sertifikat atau pesan sertifikat yang tidak tepercaya.

Penyebab: Versi 19 default ke Encrypt=Mandatory, yang memerlukan sertifikat server yang valid. Versi 18 default ke Encrypt=no (tidak terenkripsi).

Solusi:

  • Disarankan: Instal sertifikat tepercaya di server.
  • Hanya pengembangan: Tambahkan TrustServerCertificate=yes; ke string koneksi Anda (tidak disarankan untuk produksi).
  • Fallback: Tambahkan Encrypt=Optional; untuk memulihkan perilaku versi 18 (mengurangi keamanan).

Koneksi gagal dengan "Sertifikat Server hanya dapat digunakan dengan enkripsi ketat"

Gejala: Koneksi gagal saat Anda menggunakan ServerCertificate properti .

Penyebab: Properti ServerCertificate memerlukan Encrypt=Strict.

Solusi: Hapus ServerCertificate dari string koneksi Anda, atau ubah ke Encrypt=Strict;.

Aplikasi menerima kesalahan VT_BOOL saat mengatur properti Enkripsi

Gejala: Pengaturan SSPROP_INIT_ENCRYPT dengan nilai boolean gagal.

Penyebab: Versi 19 mengubah jenis properti dari VT_BOOL ke VT_BSTR.

Solusi: Gunakan nilai string ("Mandatory", , "Optional", "yes""Strict", ) "no"alih-alih nilai boolean.

Penyedia tidak ditemukan setelah pemutakhiran

Gejala: Aplikasi gagal dengan "Penyedia tidak ditemukan" atau kesalahan serupa.

Penyebab: Versi 19 menggunakan nama penyedia yang berbeda (MSOLEDBSQL19).

Solusi:

  • Perbarui string koneksi Anda dari Provider=MSOLEDBSQL ke Provider=MSOLEDBSQL19.
  • Sertakan header yang diperbarui msoledbsql.h jika menggunakan IDBInitialize dengan CLSID.