Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описываются резкие изменения между Microsoft ODBC Driver 18 for SQL Server и версией 17.
Большинство приложений, которые обновляются с версии 17 до версии 18, подвергаются одному изменению: соединения по умолчанию шифруются. Если ваше приложение перестаёт подключаться после обновления, сначала прочитайте стандартное поведение шифрования .
Сводка изменений
| Area | Версия 17 | Версия 18 и более поздние версии |
|---|---|---|
Настройка по умолчанию Encrypt |
no |
yes |
Encrypt Принятые значения |
yes, no |
yes, no, Mandatory, Optional, Strict |
| Режимы шифрования | Без или включённых | Выключенный, включённый или строгий |
| Проверка сертификата сервера | Это не происходит, если вы не запросите шифрование | Происходит по умолчанию, потому что шифрование включено по умолчанию |
| Ключевые слова в строке подключения | Базовый набор | Базовый набор плюс новые ключевые слова |
Изменения шифрования
Поведение шифрования по умолчанию
В версии 17 соединения не шифруются, если только вы не просите шифрование или сервер не требует его. В версиях 18 и более поздних версиях соединения по умолчанию шифруются.
Поскольку драйвер проверяет серверный сертификат при каждом шифровании соединения, приложение, подключившееся к серверу с самоподписанным или иным образом недоверенным сертификатом, успешно подключается к версии 17 и выходит из строя с версией 18. Сбой — это ошибка проверки сертификата, а не ошибка аутентификации.
Есть три способа решить проблему, перечисленные от самых защищённых до наименее безопасных:
- Установите сертификат на сервер, которому доверяет клиент. Этот вариант рекомендован, и он единственный, который сохраняет и шифрование, и валидацию.
- Оставьте шифрование включённым и скажите драйверу, какое имя проверить, установив
HostNameInCertificateилиServerCertificate. - Отключите шифрование, чтобы восстановить стандартное значение версии 17, добавив
Encrypt=noв строка подключения.
Предостережение
Настройка TrustServerCertificate=yes сохраняет соединение зашифрованным, но отключает проверку сертификатов, что оставляет соединение открытым для атак противника посередине. Предпочитайте проверенный сертификат.
Значения шифрования
Версия 17 принимает только yes и no. Версия 18 и более поздние версии принимают эти значения и добавляют ещё три:
| Ценность | Эквивалентно | Behavior |
|---|---|---|
Mandatory |
yes |
Соединение зашифровано. |
Optional |
no |
Соединение не шифруется, если только сервер не требует этого. |
Strict |
Нет | Соединение использует шифрование TDS 8.0. |
Strict у него нет аналога версии 17. Это единственное значение, которое выбирает TDS 8.0, где шифрование обсуждается до момента обмена входом, а не во время входа.
Восстановить поведение шифрования версии 17
Чтобы восстановить стандартное поведение версии 17, Encrypt установите явно:
Driver={ODBC Driver 18 for SQL Server};Server=<server>;Database=<database>;UID=<user_id>;PWD=<password>;Encrypt=no;
Явная установка значения выгодна даже на версии 17, потому что строка подключения ведёт себя одинаково в обеих версиях.
New строка подключения keywords
Версия 18 добавляет следующие ключевые слова строка подключения, которые версия 17 не распознаёт:
| Keyword | Purpose |
|---|---|
ConcatNullYieldsNull |
Определяет, приводит ли конкатенация нулевого значения к null. |
GetDataExtensions |
Управляет, какие SQLGetData расширения включают драйвер. |
HostNameInCertificate |
Указывает имя хоста для проверки в TLS-сертификате сервера. |
IpAddressPreference |
Указывает семейство IP-адресов, которое драйвер пробует первым. |
LongAsMax |
Отображает длинные типы данных с их max эквивалентами. |
RetryExec |
Настраивает правила повтора для неудачных запросов. |
ServerCertificate |
Указывает путь к файлу сертификата для проверки сервера. |
Отдельные ключевые слова были введены в разных версиях 18. Для релиза, который ввёл каждое ключевое слово, и полной ссылки на ключевые слова см. ODBC DSN и ключевые слова строка подключения.