Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł opisuje przełomowe zmiany między sterownikiem Microsoft ODBC 18 dla SQL Server a wersją 17.
Większość aplikacji aktualizujących się z wersji 17 do 18 jest dotknięta jedną zmianą: połączenia są domyślnie szyfrowane. Jeśli Twoja aplikacja przestaje się łączyć po aktualizacji, najpierw przeczytaj Domyślne zachowanie szyfrowania .
Podsumowanie zmian
| Area | Wersja 17 | Wersja 18 i późniejsze wersje |
|---|---|---|
Domyślne ustawienie Encrypt |
no |
yes |
Encrypt Akceptowane wartości |
yes, no |
yes, no, , Mandatory, OptionalStrict |
| Tryby szyfrowania | Wyłączony lub włączony | Wyłączone, włączone lub ścisłe |
| Weryfikacja certyfikatu serwera | Nie dzieje się to, chyba że poprosisz o szyfrowanie | Występuje domyślnie, ponieważ szyfrowanie jest domyślnie włączone |
| Słowa kluczowe parametrów połączenia | Zestaw bazowy | Zestaw bazowy plus nowe słowa kluczowe |
Zmiany szyfrowania
Domyślne zachowanie szyfrowania
W wersji 17 połączenia nie są szyfrowane, chyba że poprosisz o szyfrowanie lub serwer tego wymaga. W wersjach 18 i późniejszych połączenia są domyślnie szyfrowane.
Ponieważ sterownik waliduje certyfikat serwera za każdym razem, gdy szyfruje połączenie, aplikacja, która łączy się z serwerem z certyfikatem podpisanym lub w inny sposób nieufnym, łączy się pomyślnie w wersji 17 i zawodzi z wersją 18. Błąd jest błędem walidacji certyfikatu, a nie błędem uwierzytelniania.
Masz trzy sposoby rozwiązania problemu, od najbardziej do najmniej bezpiecznych:
- Zainstaluj certyfikat na serwerze, któremu klient ufa. Ta opcja jest zalecana i jedyna, która zachowuje zarówno szyfrowanie, jak i walidację.
- Zachowaj szyfrowanie włączone i powiedz sterownikowi, którą nazwę ma zweryfikować, ustawiając
HostNameInCertificatelubServerCertificate. - Wyłącz szyfrowanie, aby przywrócić domyślną wersję 17, dodając
Encrypt=nodo parametry połączenia.
Caution
Ustawienie utrzymuje TrustServerCertificate=yes połączenie zaszyfrowane, ale wyłącza walidację certyfikatów, co naraża połączenie na ataki przeciwnika w środku. Wolę zaufany certyfikat.
Wartości szyfrowania
Wersja 17 akceptuje tylko yes i no. Wersje 18 i późniejsze akceptują te wartości i dodają trzy kolejne:
| Value | Odpowiednik | Behavior |
|---|---|---|
Mandatory |
yes |
Połączenie jest zaszyfrowane. |
Optional |
no |
Połączenie nie jest szyfrowane, chyba że serwer tego wymaga. |
Strict |
Żadne | Połączenie wykorzystuje szyfrowanie TDS 8.0. |
Strict nie ma odpowiednika wersji 17. To jedyna wartość, która wybiera TDS 8.0, gdzie szyfrowanie jest negocjowane przed wymianą logowania, a nie w trakcie jej procesu.
Przywróć zachowanie szyfrowania wersji 17
Aby przywrócić domyślne zachowanie wersji 17, określ wyraźnie Encrypt :
Driver={ODBC Driver 18 for SQL Server};Server=<server>;Database=<database>;UID=<user_id>;PWD=<password>;Encrypt=no;
Ustawianie wartości jawnie jest korzystne nawet w wersji 17, ponieważ powoduje, że parametry połączenia zachowuje się tak samo w obu wersjach.
Nowe słowa kluczowe parametry połączenia
Wersja 18 dodaje następujące słowa kluczowe parametry połączenia, których wersja 17 nie rozpoznaje:
| Keyword | Purpose |
|---|---|
ConcatNullYieldsNull |
Kontroluje, czy łączenie wartości zerowej daje wartość null. |
GetDataExtensions |
Kontroluje, które SQLGetData rozszerzenia umożliwia sterownik. |
HostNameInCertificate |
Określa nazwę hosta do weryfikacji w certyfikacie TLS serwera. |
IpAddressPreference |
Określa rodzinę adresów IP, którą sterownik próbuje jako pierwszy. |
LongAsMax |
Odwzorowuje długie typy danych na ich max odpowiedniki. |
RetryExec |
Konfiguruje zasady powtórek dla nieudanych zapytań. |
ServerCertificate |
Określa ścieżkę do pliku certyfikatu, aby zweryfikować serwer. |
Poszczególne słowa kluczowe zostały wprowadzone w różnych wersjach wersji 18. Aby uzyskać wydanie wprowadzające każde słowo kluczowe oraz pełne odniesienie do słów kluczowych, zobacz ODBC DSN i słowa kluczowe parametry połączenia.