Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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ı
- Güncelleştirilmiş
msoledbsql.hüst bilgiyi projenize ekleyin. - için
IDBInitialize: Değişiklik gerekmez (ÜST bilgide CLSID güncelleştirildi). - için
IDataInitialize: olarakProvider=MSOLEDBSQL19değiştirinProvider=MSOLEDBSQL. - 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.
Önerilen alternatifler
| 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
IDBInitializegüncelleştirilmişmsoledbsql.hüst bilgiyi ekleyin.
İlgili içerik
- SQL Server için Microsoft OLE DB Sürücüsü
- SQL Server için OLE DB Driver ile bağlantı dizisi anahtar kelimeleri kullanmak
- OLE DB'de şifreleme ve sertifika doğrulama
- Evrensel Veri Bağlantısı (UDL) yapılandırması
- SQL Server Oturum Açma iletişim kutusu (OLE DB)
- Başlatma ve yetkilendirme özellikleri
- Kayıt defteri ayarları