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 makale, Microsoft ODBC Driver 18 for SQL Server ile sürüm 17 arasındaki kesinti değişikliklerini anlatmaktadır. Bir sürücü sürümü seçtiğinizde, bir uygulamayı 17 sürümünden 18 sürümüne yükselttiğinizde veya her iki sürümde de tutarlı şekilde davranan bir bağlantı dizesi yapmanız gerektiğinde kullanın.
Çoğu uygulama 17 sürümünden 18 sürümüne yükselten tek bir değişiklikten etkilenir: bağlantılar varsayılan olarak şifrelenmiştir. Uygulamanız yükseltme yaptıktan sonra bağlantı kurmayı durdurursa, önce Varsayılan şifreleme davranışını okuyun.
Sürüm 17 veya 18 versiyonunu seçin
Sürücü 18 mevcut ana versiyondur. Driver 17 desteklenmeye devam ediyor, ancak onu kullanan uygulamalar düzeltmeleri almak için hâlâ Driver 17 serisindeki en son küçük sürüme ihtiyaç duyuyor. Destek tarihleri ve servis kuralları için bkz. Destek yaşam döngüsü.
| Scenario | Önerilen yol |
|---|---|
| Yeni uygulama | Sürücü 18 ile başlayın. Üretimden önce şifreleme ve sertifika doğrulamasını yapılandırın. |
| Mevcut Sürücü 17 uygulaması | Driver 17 ile birlikte Driver 18'i kurun, bağlantı dizesi'de veya DSN'de sürücü adını değiştirin ve açıkça ayarlayınEncrypt. Sertifika doğrulaması başarısız olursa, sunucu sertifikasını veya istemcinin güven deposunu düzeltin. |
, HostnameInCertificate, RetryExec, veya başka bir Driver 18 anahtar kelimesine ihtiyaç duyan Encrypt=Strictuygulama |
Bu ayarı destekleyen bir Driver 18 sürümünü kullanın. Sürücü 17, yeni Encrypt anahtar kelimelerin değerini kabul Strict etmiyor ve tanımıyor. |
Sertifika dosyası sabitlenmesi gereken uygulama ServerCertificate |
Driver 18.1 veya daha sonraki sürümünü kullanarak Encrypt=Strict. Sürücü 17 bu ayarı desteklemiyor. |
Ana sürümleri değiştirmek genellikle seçtiğiniz sürücü adını veya paketi değiştirmek anlamına gelir:
| Platform | Sürücü 17 | Sürücü 18 |
|---|---|---|
| Bağlantı dizisi sürücü adı | ODBC Driver 17 for SQL Server |
ODBC Driver 18 for SQL Server |
| Linux paket adı | msodbcsql17 |
msodbcsql18 |
Değişikliklerin özeti
Varsayılan ve doğrulama satırları, DSN Encrypt ayarı, öznitelik SQL_COPT_SS_ENCRYPT veya Windows Force Protocol Encryption geçersiz olmadan sıradan uzak bağlantıları tanımlar. LocalDB uzak bir TLS hedefi değildir.
| Area | Sürüm 17 | Sürüm 18 ve sonraki sürümler |
|---|---|---|
Varsayılan ayar Encrypt |
no, uygulama Authentication kümeleri SQL_COPT_SS_ACCESS_TOKENdışında bir değere none ayarlanmadıkça ;yes |
yes (18.0.1 ve sonrası) |
Encrypt Kabul edilen değerler |
yes, no |
yes, no, Mandatory, Optional, Strict |
| Şifreleme modları | Ara ya da açık | Kapatıcı, açık ya da kesin |
| Sunucu sertifikası doğrulaması |
Encrypt=yes;TrustServerCertificate=noile , sertifikayı doğrular. Sadece sunucu gerektiren şifreleme doğrulamayı seçmez. |
Varsayılan olarak doğrulur. Sıkı olmayan modlarda, TrustServerCertificate=yes sunucu şifreleme gerektirdiğinde de normal doğrulama atlanır. |
| Bağlantı dizesi anahtar sözcükleri | Temel set | Temel küme ve yeni anahtar kelimeler |
Şifreleme değişiklikleri
Varsayılan şifreleme davranışı
Sürücü 17, anahtar kelime başka bir değere ayarlanmadıkça veya uygulama özniteliği SQL_COPT_SS_ACCESS_TOKEN belirledikçe varsayılan olarak olarak kullanılır Encrypt=noAuthentication.none Her ikisi de varsayılan olarak değişir yes. Açık Encrypt=no bir şey yine de şifrelemeyi kapatır. Sürücü 18.0.1 ve sonrasında varsayılan olarak Encrypt=yes. Versiyonları karşılaştırırken açıkça ayarlayın Encrypt .
Tam bağlantı şifrelemesi, sorgu metnini ve sonuçları ile girişi korur. Ile Encrypt=nobirlikte, sunucu hâlâ tam bağlantı şifrelemesi gerektirebilir. Hem istemci hem de sunucu şifrelemeyi kapalı seçtiğinde, Sıkı olmayan müzakere sadece giriş şifrelemesi kullanır; bu, sonraki uygulama verilerini korumaz.
Ile Encrypt=yes;TrustServerCertificate=noher iki sürücü normal sunucu sertifikası doğrulamasını seçer. Sadece sunucu tam bağlantı şifrelemesi gerektiriyorsa ve TrustServerCertificate=no (varsayılan olarak), Sürücü 18 sertifikayı doğrular. Dış Strict modunda TrustServerCertificate=yes , Driver 18 bu doğrulamayı atlar. Sürücü 17 sadece sunucu gereksinimi nedeniyle doğrulama yapmıyor. Windows Force Protocol Encryption ve dahili sertifika doğrulama geri çağrı yolları bu karşılaştırma kapsamında kapsama alınmaz.
Varsayılan şifreleme ayarlarıyla, 17 sürümünden 18 sürümüne yükseltmek güvenilmeyen bir sunucu sertifikasını ortaya çıkarabilir. Sürüm 18 sertifikayı reddederse, kimlik doğrulama ayarlarını değiştirmeden önce sertifika zincirini ve adını teşhis edin.
Şifreleme ve sunucu kimliği doğrulamasını etkin tutun:
- Geçerli bir sunucu sertifikası ve istemcinin güven deposunu siten yapılandırmak ki, istemci veren sertifika otoritesine güvensin. Sertifikadaki bir isim kullanarak bağlanın.
- Bir takma ad ile bağlanıyorsanız,
HostnameInCertificatesunucu sertifikasında geçerli bir isim ayarlayın. Bu ayar, güvenilmeyen bir sertifika zincirini onarmaz. - Sürücü
Encrypt=Strict18.1 ve sonraki sürümler için de sunucu sertifikasının bir sertifika dosyası ile eşleştirmesini desteklerServerCertificate. Bu ayar sertifikayı sabitler; ana bilgisayar adı belirtmez. Kullanmadan önce ODBC DSN ve bağlantı dizesi anahtar kelimelerindeki kısıtlamalarını gözden geçirin.
Caution
İzole bir test ortamı için Encrypt=yes;TrustServerCertificate=yes şifreleme ister, ancak sunucu kimliği doğrulamasını atlar, böylece bağlantı ortadaki düşman saldırılarına açık bırakılır. Bunu bir prodüksiyon tamiri olarak kullanmayın. Sıkı modda, TrustServerCertificate göz ardı edilir.
Mevcut bir uygulama, kontrollü uyumluluk testi sırasında sürüm 17 varsayılan olmasını gerektiriyorsa, bkz. Sürüm 17 şifreleme davranışını geri döndür.
Encrypt=no ve Encrypt=optional sertifika güvenini tamir etmiyor, uygulama verilerini şifrelememiş bırakabilir.
Şifreleme değerleri
Sürüm 17 sadece yes ve no. Sürüm 18 ve sonraki sürümler bu değerleri kabul eder ve üç tane daha ekler:
| Değer | Eşdeğer | Davranış |
|---|---|---|
Mandatory |
yes |
Bağlantı şifrelenmiş. |
Optional |
no |
Tam bağlantı şifrelemesi talep etmiyor. Sunucu hâlâ bunu talep edebilir; sadece giriş şifrelemesi tam oturum koruması değildir. |
Strict |
Hiçbiri | Bağlantı TDS 8.0 şifreleme kullanır. Sunucu, SQL Server 2022 ve sonraki sürümler gibi TDS 8.0'ı desteklemelidir. |
Strict 17 versiyonu karşılığı yoktur. TDS 8.0'ı seçen tek değer bu; şifreleme giriş değişimi sırasında değil, önce müzakere edilir.
Sürüm 17 şifreleme davranışını geri getir
Güven düzeltmelerini inceledikten sonra, yalnızca şifrelenmemiş uygulama verilerine izin veren kontrollü uyumluluk testi için aşağıdaki ayarı kullanın:
Encrypt=no
Sürücü 18 de bu ayar için kabul ediyor Encrypt=optional . Her iki değer de sunucunun şifreleme gerektirmesini engellemez. Testten sonra planlanan şifrelenmiş yapılandırmayı geri getirin; devre dışı bırakılmış şifrelemeyi sertifika-güven çözümü olarak kullanmayın.
Yükseltme kontrol listesi
- Envanter bağlantı dizeleri, DSN'ler, paket referansları ve Driver 17'yi seçen dağıtım betikleri.
- Sürücü 18'i üretim ile uyumlu bir test ortamına kurun.
- Her bağlantı dizesi'deki anahtar kelimeyi
Driver,ODBC Driver 18 for SQL Serverolarak değiştirin ve her DSN'i Driver 18'i kullanacak şekilde güncelleyin veya yeniden oluşturun. Sürücü 18'i kurmak mevcut bağlantıları değiştirmez, çünkü Driver 17 adını taşıyan bağlantılar sürekli Driver 17'yi kullanır. - Açık şekilde ayarlayın
Encrypt. Normal sertifika doğrulama ile kullanınEncrypt=Mandatory. Yalnızca sunucu TDS 8.0'ı desteklediğinde, örneğin SQL Server 2022 ve daha sonraki sürümlerde kullanılırEncrypt=Strict. TDS 8.0'ıEncrypt=Mandatorydesteklemeyen sunucular için . - Normal doğrulama için, güvenilir zincire ve kabul edilen sunucu adına bağlanın
TrustServerCertificate=nove doğrulayın. Driver 18.1 ve daha sonraki sürümlerde Strict dosya sabitlemesi için, sertifika eşleşmesini ve geçerlilik tarihlerini doğrulayın;TrustServerCertificateStrict modda görmezden gelinir. - Uygulamanın kimlik doğrulama, sorgu, işlem, toplu kopyalama, yedekleme ve tekrar deneme yollarını çalıştırın.
- Başarısızlıkları kimlik doğrulama veya ağ hatası olarak ele almadan önce sertifika doğrulama hataları için tanılamayı gözden geçirin.
- Driver 17'yi açık tutun ve envanteri adım 1'den doğrulama tamamlanana kadar tutun, böylece sürüm 17'ye geri dönebilirsiniz.
Sürüm 17'ye geri dön
Sürücü 17 ve Sürücü 18 yan yana kuruluyor, böylece Sürücü 18'i kaldırmadan geri dönebilirsiniz. İndirme ve kurulum detayları için bkz. Download ODBC Driver for SQL Server.
- Her istemcide Driver 17'nin hâlâ yüklü olduğunu doğrulayın.
- Yükseltme kontrol listesindeki envanteri kullanarak, her bağlantı dizesi'deki anahtar kelimeyi
Drivertekrar 'yeODBC Driver 17 for SQL Serverdeğiştirin. - Her DSN'i Driver 17'yi kullanmak üzere güncelleyin veya yeniden oluşturun.
- Paket referanslarını ve dağıtım betiklerini Linux'taki gibi Driver 17 paketine
msodbcsql17geri döndürün. - Driver 17 ile kullanılan uygulamanın ve
TrustServerCertificatedeğerleriniEncryptgeri getirin. Sürücü 17 sadeceyesvenoforEncryptgibi anahtar kelimeleri kabul eder ve Sürücü 18ServerCertificateHostnameInCertificategibi anahtar kelimeleri tanımaz, bu yüzden Sürücü 18 için eklenen değerleri ve anahtar kelimeleri kaldırın. Takma adları anahtar kelimelerini Driver 17 adlarına geri değiştirin ve yerineConnectTimeout'yi ayarlayanSQL_ATTR_LOGIN_TIMEOUTbirSQLSetConnectAttrçağrı ile değiştirin. Eşleme için bkz. Yeni bağlantı dizesi anahtar kelimeleri.
Geri almayı tamamlanmış saymadan önce doğrulayın:
- Her bağlantı Sürücü 17'yi bildiriyor.
SQLGetInfo ile
SQL_DRIVER_VERçağırın; ana sürüm17. - Uygulamanın kimlik doğrulama, sorgulama, işlem, toplu kopyalama, failover ve tekrar deneme yolları başarılı olur.
- Bağlantı dizileri ve DSN'ler, Sürücü 18 için eklenen hiçbir
Encryptdeğer veya anahtar kelime içermez.
Yeni bağlantı dizesi anahtar kelimeleri
Sürüm 18, aşağıdaki bağlantı dizesi anahtar kelimelerini ekliyor, ancak 17. sürüm bunları tanımıyor. Bazıları, 17. sürümün desteklediği ayarlar için yeni isimlerdir ve farklı bir anahtar kelime veya öznitelik altında, Sürüm 17'nin eşdeğer sütununda listelenmiştir.
| Anahtar kelime | En düşük sürüm | Purpose | Sürüm 17 karşılığı |
|---|---|---|---|
ConcatNullYieldsNull |
18.6 | Bir null değeri birleştirmenin null verip vermediğini kontrol eder. | Hiçbiri |
ConnectTimeout |
18.7 | Giriş süresini saniyeler içinde ayarlıyor. Uygulama da ayarlıyorsa SQL_ATTR_LOGIN_TIMEOUT, öznitelik öncelik alır. |
SQL_ATTR_LOGIN_TIMEOUT öznitelik, küme SQLSetConnectAttr |
FailoverPartner |
18.7 | Veritabanı yansıtma için yas devre ortağını belirtir. Yalnızca Windows. |
Failover_Partner anahtar sözcük |
GetDataExtensions |
18,0 | Sürücünün hangi SQLGetData uzantıları etkinleştirdiğini kontrol eder. |
Hiçbiri |
HostnameInCertificate |
18,0 | Sunucunun TLS sertifikasında doğrulanacak ana bilgisayar adını belirtir. | Hiçbiri |
IpAddressPreference |
18.1 | Sürücünün ilk denesi IP adres ailesini belirtir. | Hiçbiri |
LongAsMax |
18,0 | Uzun veri türlerini eşdeğerleriyle max eşler. |
Hiçbiri |
MultipleActiveResultSets |
18.7 | Birden fazla aktif sonuç seti (MARS) etkinleştirir.
Yes veya No kabul eder. |
MARS_Connection anahtar sözcük |
RetryExec |
18.1 | Başarısız sorgular için yeniden deneme kurallarını yapılandırıyor. | Hiçbiri |
ServerCertificate |
18.1 | Kullanılırken Encrypt=Strictsertifika dosyasının sunucu sertifikasıyla eşleşmesini belirtir. |
Hiçbiri |
WorkstationID |
18.7 | Sunucuya gönderilen iş istasyonu adını belirtir. |
WSID anahtar sözcük |
MultipleActiveResultSets, WorkstationID, ve FailoverPartner ODBC anahtar kelime isimlerini Microsoft.Data.SqlClient özellik adlarıyla hizalanan takma adlardır. 18. sürüm ayrıca eski isimleri de kabul eder. Detaylar için bkz. Bağlantı dize anahtar kelime birleştirmesi ve ConnectTimeout anahtar kelimesi.
Tam anahtar kelime referansı için ODBC DSN ve bağlantı dizesi anahtar kelimelerine bakınız.