Aracılığıyla paylaş


Başlıca sürüm farklılıkları

Bu makalede, SQL Server için Microsoft OLE DB Sürücüsü 19 ile önceki sürümler arasındaki hataya neden olan değişiklikler açıklanmaktadır.

Tavsiye

MSOLEDBSQL19 (SQL Server için Microsoft OLE DB Sürücüsü 19), önerilen geçerli OLE DB sürücüsüdür. TDS 8.0 ve modern güvenlik özelliklerini destekler. Sürüm 19.2.0+ ayrıca TLS 1.3'i de destekler. Bağlantı dizelerinizde kullanın Provider=MSOLEDBSQL19 .

Değişikliklerin özeti

Area Sürüm 18 ve öncesi Sürüm 19+
Varsayılan şifreleme (Encrypt) ayarı no (şifreleme yok veya sunucu şifreleme gerektirebilir) Mandatory (şifreleme gerekli)
Encrypt özellik türü VT_BOOL VT_BSTR
Encrypt geçerli değerler no/yes no/yes/true/false/Optional/Mandatory/Strict
Sertifika doğrulama İstemci ayarlarken atlandı Encrypt=no Şifreleme gerçekleştiğinde her zaman değerlendirilir
Sürücü adı MSOLEDBSQL MSOLEDBSQL19
CLSID MSOLEDBSQL_CLSID (eski) MSOLEDBSQL_CLSID (üst bilgide güncelleştirildi)

Uyarı

ActiveDirectoryPassword kimlik doğrulaması kullanım dışı bırakıldı. Sürüm 18'den 19'a geçiş yapıp kullanıyorsanız Authentication=ActiveDirectoryPassword, daha güvenli bir kimlik doğrulama yöntemine geçmeyi planlayın. Alternatifler için bkz. Kullanım dışı kimlik doğrulama yöntemleri .

Şifreleme özelliği değişiklikleri

Özellik türü değişikliğini şifrele

driver özelliği SSPROP_INIT_ENCRYPT olarak VT_BOOLVT_BSTRdeğişir.

Bağlantı dizesi Sürüm 18 değerleri Sürüm 19 değerleri
Sağlayıcı: Encrypt no/yes no/yes/true/false/Optional/Mandatory/Strict
Idataınitialize: Use Encryption for Data true/false no/yes/true/false/Optional/Mandatory/Strict

Değer eşleme:

Mode Eşdeğer değerler Davranış
Optional no, false Sunucu gerektirmediği sürece şifrelenmemiş
Mandatory (varsayılan) yes, true Şifreli bağlantı gerekiyor
Strict (eşdeğeri yok) TDS 8.0 şifrelemesi; SQL Server 2022+ gerektirir

Tavsiye

Sürüm 19.2.0'dan başlayarak, TDS 8.0 bağlantıları SQL Server 2022 veya sonraki bir sürüme bağlanırken TLS 1.3 kullanabilir. Özelliği ServerCertificate de bu sürüme eklendi. Daha fazla bilgi için bkz. TLS 1.3 desteği.

Geriye dönük uyumluluk için sürüm 19, yeni değerlere ( ) ek olarak tüm sürüm 18 değerlerini (yesMandatorynoStrict/Optional//) kabul eder.

Varsayılan şifreleme davranışı

Sürüm Varsayılan Result
18 ve öncesi no Varsayılan olarak şifrelenmemiş bağlantılar
19+ Mandatory Varsayılan olarak şifrelenen bağlantılar

Sürüm 18 davranışını geri yüklemek için bağlantı dizenize şu seçeneklerden birini ekleyin:

  • Sağlayıcı: Encrypt=Optional;
  • Idataınitialize: Use Encryption for Data=Optional;

Sertifika doğrulama davranışı

Scenario Sürüm 18 Sürüm 19+
İstemci kümeleri Encrypt=no, sunucu şifrelemeyi zorlamaz Doğrulama yok Doğrulama yok
İstemci kümeleri Encrypt=no, sunucu şifrelemeyi zorlar Trust Server Certificate Göz ardı Trust Server Certificate Değerlendirilir
İstemci kümeleri Encrypt=yes Trust Server Certificate Değerlendirilir Trust Server Certificate Değerlendirilir

Uyumluluk notları

Varsayılan ayarları kullanan sürüm 19 istemcileri, sunucu şifrelemeyi zorladığında ve güvenilmeyen bir sertifika kullandığında bağlanamaz. Ayarınızı güncelleştirin Trust Server Certificate veya güvenilen bir sertifika kullanın.

TrustServerCertificate sürüm 19'da kaldırılmamıştı . Seçenek çalışmaya devam ediyor. Sürüm 18, sunucu şifrelemeye nozorlandığında Encrypt bile olarak ayarlandığında bu ayarı yoksaydı. Sürüm 19 artık tüm şifrelenmiş senaryolarda değerlendirilmektedir TrustServerCertificate .

19.4.1 öncesi sürüm 19 sürücüsünde, daha önce v18 yüklü olan sistemlerde kayıt defteri seçeneğini no ayarlayabilen TrustServerCertificate bir yükleyici sorunu vardı. Bu sorun oluştuğunda, sürücü bağlantı dizesi seçeneklerinin hiçbir etkisi yokmuş gibi görünmesine neden olabilecek daha güvenli kayıt defteri ayarını kullanır. Bu sorun 19.4.1 sürümünde giderilmiştir. Yeni bir v19 yüklemesi (v18 olmadan) her zaman için kayıt defteri seçeneğini yesdoğru olarak varsayılan olarak varsayılan olarak kullanır. Daha fazla bilgi için bkz. kayıt defteri ayarları.

Anahtar sözcük biçimi arabirime göre farklılık gösterir:

  • Sağlayıcı bağlantı dizeleri boşluk kullanmaz: TrustServerCertificate=yes;
  • IDataInitialize bağlantı dizeleri boşluk kullanır: Trust Server Certificate=yes;

Daha fazla bilgi için bkz. OLE DB'de şifreleme ve sertifika doğrulama.

Protokol Şifrelemesini Zorla için kayıt defteri ayarları

Protokolü Şifrelemeye Zorla kayıt defteri ayarı, şifreleme modlarına eşleyen sayısal değerler kullanır:

Kayıt defteri değeri Şifreleme modu Description
0 Optional Şifreleme yalnızca sunucu gerektiriyorsa
1 Mandatory Şifreleme gerekiyor
2 Strict TDS 8.0 şifrelemesi

Sürücü, kayıt defteri ayarı ile bağlantı özelliği arasındaki en güvenli seçeneği kullanır. Kayıt defteri anahtarı konumları için bkz . Kayıt defteri ayarları.

Sürücü adı değişiklikleri

Sürüm 19, sürüm 18 ile yan yana yüklemeyi destekler. Sürücü adı, farklılaştırma için ana sürüm numarasını içerir.

Arayüz Sürüm 18 Sürüm 19
Sağlayıcı anahtar sözcüğü MSOLEDBSQL MSOLEDBSQL19
CLSID sabiti MSOLEDBSQL_CLSID MSOLEDBSQL_CLSID (içinde msoledbsql.hgüncelleştirildi)
Kullanıcı arabirimi görünen adı SQL Server için Microsoft OLE DB Sürücüsü SQL Server için Microsoft OLE DB Sürücüsü 19

Göç Adımları

  1. Güncelleştirilmiş msoledbsql.h üst bilgiyi projenize ekleyin.
  2. için IDBInitialize: Değişiklik gerekmez (ÜST bilgide CLSID güncelleştirildi).
  3. içinIDataInitialize: olarak Provider=MSOLEDBSQL19değiştirinProvider=MSOLEDBSQL.
  4. Kullanıcı arabirimi araçları (SSMS, veri bağlantısı özellikleri) için: SQL Server için Microsoft OLE DB Sürücüsü 19'u seçin.

Bağlantı dizesi örnekleri

Sürüm 18 (önce):

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

Sürüm 19 (sonra):

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

Açık şifreleme ayarlarıyla sürüm 19:

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

Katı şifrelemeli sürüm 19 (TDS 8.0):

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

Yeni sürüm 19 özellikleri

Sürüm 19, şifreleme moduyla Strict gelişmiş sertifika doğrulaması özellikleri sağlar.

HostNameInCertificate (v19.0.0+)

Sunucunun TLS/SSL sertifikasına göre doğrulanması gereken ana bilgisayar adını belirtir. Bağlantı dizesindeki sunucu adı sertifikanın Ortak Adı'ndan (CN) veya Konu Alternatif Adı'ndan (SAN) farklı olduğunda bu özelliği kullanın.

Arayüz Mülkiyet
Sağlayıcı anahtar sözcüğü HostNameInCertificate
IDataInitialize anahtar sözcüğü Host Name In Certificate
OLE DB özelliği SSPROP_INIT_HOST_NAME_CERTIFICATE

Uyarı

Bu özellik etkinleştirildiğinde Trust Server Certificate yoksayılır. olduğunda Encrypt=Strict, sertifika her zaman doğrulanır.

ServerCertificate (v19.2.0+)

Tam sertifika eşleştirmesi için bir sertifika dosyasının (PEM, DER veya CER biçimi) yolunu belirtir. Sürücü, TLS el sıkışması sırasında bu sertifikayı sunucunun sertifikasıyla karşılaştırır.

Arayüz Mülkiyet
Sağlayıcı anahtar sözcüğü ServerCertificate
IDataInitialize anahtar sözcüğü Server Certificate
OLE DB özelliği SSPROP_INIT_SERVER_CERTIFICATE

Önemli

ServerCertificate yalnızca olduğunda Encrypt=Strictkullanılabilir. Veya şifreleme ile MandatoryOptional kullanılmaya çalışılması bağlantı hatasıyla sonuçlanır.

Kullanım dışı kimlik doğrulama yöntemleri

ActiveDirectoryPassword

ActiveDirectoryPassword Kimlik doğrulama yöntemi (Microsoft Entra Id Password authentication) kullanım dışıdır. Bu kimlik doğrulaması, çok faktörlü kimlik doğrulaması (MFA) ile uyumlu olmayan ve güvenlik riskleri oluşturan OAuth 2.0 Kaynak Sahibi Parola Kimlik Bilgileri (ROPC) iznini temel alır.

Uyarı

Microsoft, kullanıcıları kötü amaçlı saldırılardan korumak için bu yüksek riskli kimlik doğrulama akışından uzaklaşıyor. Bu seçenek kaldırılmadan önce daha güvenli bir kimlik doğrulama yöntemine geçmeyi planlayın. Daha fazla bilgi için bkz. Azure için zorunlu çok faktörlü kimlik doğrulamasını planlama.

Scenario Önerilen kimlik doğrulaması Bağlantı dizesi anahtar sözcüğü
Etkileşimli kullanıcı bağlamı Çok faktörlü kimlik doğrulaması Authentication=ActiveDirectoryInteractive
Azure'da çalışan uygulama Yönetimli Kimlik Authentication=ActiveDirectoryMSI
Kullanıcısız hizmet/daemon Hizmet Sorumlusu Authentication=ActiveDirectoryServicePrincipal

Daha fazla bilgi için bkz. Microsoft Entra Id kullanma.

Sorun giderme

Bağlantı sertifika doğrulama hatasıyla başarısız oluyor

Belirti: Bağlantı bir sertifika doğrulama hatası veya güvenilmeyen sertifika iletisiyle başarısız oluyor.

Neden: Sürüm 19 varsayılan olarak Encrypt=Mandatorygeçerli bir sunucu sertifikası gerektirir. Sürüm 18 varsayılan olarak Encrypt=no (şifrelenmemiş) olarak ayarlandı.

Çözümler:

  • Önerilen: Sunucuya güvenilir bir sertifika yükleyin.
  • Yalnızca geliştirme: Bağlantı dizenize ekleyin TrustServerCertificate=yes; (üretim için önerilmez).
  • Geri dönüş: Sürüm 18 davranışını geri yüklemeye ekleyin Encrypt=Optional; (güvenliği azaltır).

Bağlantı "Sunucu Sertifikası yalnızca katı şifrelemeyle kullanılabilir" ile başarısız oluyor

Belirti: Özelliğini kullandığınızda ServerCertificate bağlantı başarısız oluyor.

Neden: ServerCertificate özelliği gerektirir Encrypt=Strict.

Çözüm: Bağlantı dizenizden kaldırın ServerCertificate veya olarak Encrypt=Strict;değiştirin.

Şifreleme özelliği ayarlanırken uygulama VT_BOOL hata alıyor

Belirti: Boole değeriyle ayar SSPROP_INIT_ENCRYPT başarısız oluyor.

Neden: Sürüm 19, özellik türünü olarak VT_BOOLVT_BSTRdeğiştirdi.

Çözüm: Boole değerleri yerine dize değerlerini ("Mandatory", "Optional""Strict", , "yes", "no") kullanın.

Yükselttikten sonra sağlayıcı bulunamadı

Belirti: Uygulama "Sağlayıcı bulunamadı" veya benzer bir hatayla başarısız oluyor.

Neden: Sürüm 19 farklı bir sağlayıcı adı (MSOLEDBSQL19 ) kullanıyor.

Çözümler:

  • bağlantı dizenizi ile Provider=MSOLEDBSQLProvider=MSOLEDBSQL19güncelleştirin.
  • CLSID ile kullanıyorsanız IDBInitialize güncelleştirilmiş msoledbsql.h üst bilgiyi ekleyin.