Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
В этой статье описываются критические изменения между microsoft OLE DB Driver 19 для SQL Server и более ранними версиями.
Подсказка
MSOLEDBSQL19 (Microsoft OLE DB Driver 19 для SQL Server) — это текущий рекомендуемый драйвер OLE DB. Она поддерживает TDS 8.0 и современные функции безопасности. Версия 19.2.0+ также поддерживает TLS 1.3. Используйте Provider=MSOLEDBSQL19 в строках подключения.
Сводка изменений
| Area | Версия 18 и более ранняя | Версия 19+ |
|---|---|---|
Параметр шифрования по умолчанию (Encrypt) |
no (шифрование или сервер не может требовать шифрования) |
Mandatory (требуется шифрование) |
Encrypt Тип свойства |
VT_BOOL |
VT_BSTR |
Encrypt допустимые значения |
no/yes |
no/yes/true/false/Optional/Mandatory/Strict |
| Проверка сертификата | Пропущено, когда наборы клиентов Encrypt=no |
Всегда вычисляется при возникновении шифрования |
| Имя драйвера | MSOLEDBSQL |
MSOLEDBSQL19 |
| CLSID |
MSOLEDBSQL_CLSID (устаревшая версия) |
MSOLEDBSQL_CLSID (обновлено в заголовке) |
Предупреждение
Проверка подлинности ActiveDirectoryPassword не рекомендуется. Если вы выполняете миграцию с версии 18 до 19 и используете Authentication=ActiveDirectoryPassword, планируйте переход на более безопасный метод проверки подлинности. Для альтернативных вариантов см. нерекомендуемые методы проверки подлинности .
Изменения свойств шифрования
Изменение типа свойства encrypt
Свойство драйвера SSPROP_INIT_ENCRYPT изменяется на VT_BOOLVT_BSTR.
| строка подключения | Значения версии 18 | Значения версии 19 |
|---|---|---|
Поставщик: Encrypt |
no/yes |
no/yes/true/false/Optional/Mandatory/Strict |
IDataInitialize: Use Encryption for Data |
true/false |
no/yes/true/false/Optional/Mandatory/Strict |
Сопоставление значений:
| Mode | Эквивалентные значения | Поведение |
|---|---|---|
Optional |
no, false |
Незашифрованный, если сервер не требует его |
Mandatory (по умолчанию) |
yes, true |
Обязательное зашифрованное подключение |
Strict |
(нет эквивалента) | Шифрование TDS 8.0; требуется SQL Server 2022+ |
Подсказка
Начиная с версии 19.2.0 подключения TDS 8.0 могут использовать TLS 1.3 при подключении к SQL Server 2022 или более поздней версии. Свойство ServerCertificate также было добавлено в этой версии. Дополнительные сведения см. в разделе поддержки TLS 1.3.
Для обратной совместимости версия 19 принимает все значения версии 18 (yes/no) в дополнение к новым значениям ().Optional/Mandatory/Strict
Поведение шифрования по умолчанию
| Версия | По умолчанию | Result |
|---|---|---|
| 18 и более ранних версий | no |
Подключения, незашифрованные по умолчанию |
| 19+ | Mandatory |
Подключения, зашифрованные по умолчанию |
Чтобы восстановить поведение версии 18, добавьте один из следующих параметров в строку подключения:
- Поставщик:
Encrypt=Optional; - IDataInitialize:
Use Encryption for Data=Optional;
Поведение проверки сертификата
| Scenario | Версия 18 | Версия 19+ |
|---|---|---|
Наборы Encrypt=noклиентов, сервер не принудительно шифруется |
Проверка отсутствует | Проверка отсутствует |
Наборы Encrypt=noклиентов, принудительное шифрование сервера |
Trust Server Certificate
Игнорировать |
Trust Server Certificate
Оценены |
Клиентские наборы Encrypt=yes |
Trust Server Certificate Оценены |
Trust Server Certificate Оценены |
Заметки о совместимости
Клиенты версии 19, использующие параметры по умолчанию, не могут подключаться, когда сервер принудительно шифрует и использует ненадежный сертификат. Обновите Trust Server Certificate параметр или используйте доверенный сертификат.
TrustServerCertificate
не был удален в версии 19. Этот параметр по-прежнему работает. Версия 18 игнорирует этот параметр, если Encrypt задано noзначение , даже если сервер принудительно шифровался. Версия 19 теперь оценивается TrustServerCertificate во всех зашифрованных сценариях.
Драйвер версии 19 до 19.4.1 имел проблему установщика, которая могла задать TrustServerCertificate параметр no реестра в системах, которые ранее установили версию 18. При возникновении этой проблемы драйвер будет использовать более безопасный параметр реестра, что может привести к отсутствии влияния параметров строки подключения. Эта проблема устранена в версии 19.4.1. Новая установка версии 19 (без версии 18) всегда правильно использует параметр yesреестра. Дополнительные сведения см. в параметрах реестра.
Формат ключевого слова отличается по интерфейсу:
- Строки подключения поставщика не используют пробелы:
TrustServerCertificate=yes; - Строки подключения IDataInitialize используют пробелы:
Trust Server Certificate=yes;
Дополнительные сведения см. в разделе "Шифрование и проверка сертификатов" в OLE DB.
Параметры реестра для принудительного шифрования протокола
Параметр реестра принудительного шифрования протоколов использует числовые значения, сопоставленные с режимами шифрования:
| Значение реестра | Режим шифрования | Description |
|---|---|---|
0 |
Optional |
Шифрование только в том случае, если требуется сервер |
1 |
Mandatory |
Требуется шифрование |
2 |
Strict |
Шифрование TDS 8.0 |
Драйвер использует самый безопасный параметр между параметром реестра и свойством подключения. Сведения о расположениях разделов реестра см. в разделе "Параметры реестра".
Изменение имени водителя
Версия 19 поддерживает параллельное установку с версией 18. Имя драйвера включает основной номер версии для различения.
| Интерфейс | Версия 18 | Версия 19 |
|---|---|---|
| Ключевое слово поставщика | MSOLEDBSQL |
MSOLEDBSQL19 |
| Константы CLSID | MSOLEDBSQL_CLSID |
MSOLEDBSQL_CLSID (обновлено в msoledbsql.h) |
| Отображаемое имя пользовательского интерфейса | Драйвер Microsoft OLE DB для SQL Server | Microsoft OLE DB Driver 19 for SQL Server |
Шаги миграции
- Включите обновленный
msoledbsql.hзаголовок в проект. - Для
IDBInitialize: изменения не требуются (CLSID обновлен в заголовке). - Для
IDataInitialize: изменениеProvider=MSOLEDBSQLProvider=MSOLEDBSQL19. - Для средств пользовательского интерфейса (SSMS, свойства канала данных): выберите Microsoft OLE DB Driver 19 для SQL Server.
Примеры строк подключения
Версия 18 (до):
Provider=MSOLEDBSQL;Server=myserver;Database=mydb;Trusted_Connection=yes;
Версия 19 (после):
Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Trusted_Connection=yes;
Версия 19 с явными параметрами шифрования:
Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Encrypt=Mandatory;TrustServerCertificate=no;
Версия 19 с строгим шифрованием (TDS 8.0):
Provider=MSOLEDBSQL19;Server=myserver;Database=mydb;Encrypt=Strict;ServerCertificate=C:\certs\server.cer;
Новые свойства версии 19
Версия 19 содержит свойства для расширенной проверки сертификатов с Strict помощью режима шифрования.
HostNameInCertificate (версия 19.0.0+)
Указывает имя узла для проверки на основе TLS/SSL-сертификата сервера. Используйте это свойство, если имя сервера в строке подключения отличается от общего имени сертификата (CN) или альтернативного имени субъекта (SAN).
| Интерфейс | Недвижимость |
|---|---|
| Ключевое слово поставщика | HostNameInCertificate |
| Ключевое слово IDataInitialize | Host Name In Certificate |
| Свойство OLE DB | SSPROP_INIT_HOST_NAME_CERTIFICATE |
Замечание
Это свойство игнорируется при Trust Server Certificate включении. Когда Encrypt=Strictсертификат всегда проверяется.
ServerCertificate (версия 19.2.0+)
Указывает путь к файлу сертификата (PEM, DER или CER-формату) для точного сопоставления сертификатов. Драйвер сравнивает этот сертификат с сертификатом сервера во время подтверждения TLS.
| Интерфейс | Недвижимость |
|---|---|
| Ключевое слово поставщика | ServerCertificate |
| Ключевое слово IDataInitialize | Server Certificate |
| Свойство OLE DB | SSPROP_INIT_SERVER_CERTIFICATE |
Это важно
ServerCertificate можно использовать только в том случае Encrypt=Strict. Попытка использовать его с Mandatory или Optional шифрованием приводит к ошибке подключения.
Устаревшие методы проверки подлинности
ActiveDirectoryPassword
Метод ActiveDirectoryPassword проверки подлинности (проверка подлинности пароля идентификатора Microsoft Entra ID) не рекомендуется. Эта проверка подлинности основана на предоставлении учетных данных пароля владельца ресурса OAuth 2.0 (ROPC), которое несовместимо с многофакторной проверкой подлинности (MFA) и представляет риски для безопасности.
Предупреждение
Корпорация Майкрософт отойдет от этого потока проверки подлинности с высоким риском, чтобы защитить пользователей от вредоносных атак. Перед удалением этого параметра планируйте миграцию в более безопасный метод проверки подлинности. Дополнительные сведения см. в статье "Планирование обязательной многофакторной проверки подлинности для Azure".
Рекомендуемые альтернативные варианты
| Scenario | Рекомендуемая проверка подлинности | Ключевое слово строки подключения |
|---|---|---|
| Интерактивный контекст пользователя | Многофакторная проверка подлинности | Authentication=ActiveDirectoryInteractive |
| Приложение, работающее в Azure | Управляемая идентичность | Authentication=ActiveDirectoryMSI |
| Служба или управляющая программа без пользователя | Служебный принципал | Authentication=ActiveDirectoryServicePrincipal |
Дополнительные сведения см. в разделе "Использование идентификатора Microsoft Entra".
Устранение неполадок
Сбой подключения с ошибкой проверки сертификата
Симптом. Подключение завершается ошибкой проверки сертификата или сообщением о недоверенном сертификате.
Причина: по умолчанию версии 19 требуется Encrypt=Mandatoryдействительный сертификат сервера. По умолчанию Encrypt=no версия 18 (незашифрована).
Solutions:
- Рекомендуется установить доверенный сертификат на сервере.
-
Только разработка: добавьте
TrustServerCertificate=yes;в строку подключения (не рекомендуется для рабочей среды). -
Резервный вариант: добавление
Encrypt=Optional;в поведение восстановления версии 18 (снижает безопасность).
Сбой подключения с параметром "Сертификат сервера можно использовать только с строгим шифрованием".
Симптом: подключение завершается сбоем ServerCertificate при использовании свойства.
Причина: ServerCertificate для свойства требуется Encrypt=Strict.
Решение: удалите ServerCertificate из строки подключения или измените его Encrypt=Strict;.
Приложение получает ошибку VT_BOOL при настройке свойства Encrypt
Симптом: установка SSPROP_INIT_ENCRYPT логического значения завершается ошибкой.
Причина: версия 19 изменила тип свойства на VT_BOOLVT_BSTR.
Решение: используйте строковые значения ("Mandatory", , "Optional""Strict", "yes", ) "no"вместо логических значений.
Поставщик не найден после обновления
Симптом: приложение завершается ошибкой "Поставщик не найден" или аналогичной ошибкой.
Причина: версия 19 использует другое имя поставщика (MSOLEDBSQL19).
Solutions:
- Обновите строку подключения от
Provider=MSOLEDBSQL.Provider=MSOLEDBSQL19 - Включите обновленный
msoledbsql.hзаголовок при использованииIDBInitializeс CLSID.
Связанный контент
- Драйвер Microsoft OLE DB для SQL Server
- Использование ключевых слов строки подключения с драйвером OLE DB для SQL Server
- Шифрование и проверка сертификатов в OLE DB
- Конфигурация универсального канала данных (UDL)
- Диалоговое окно входа SQL Server (OLE DB)
- Свойства инициализации и авторизации
- Настройки реестра