[Перевод] Новое в SQL Server 2022: Microsoft.Data.Sqlclient

Популярная среди администраторов баз данных SQL Server Management Studio (SSMS) для подключения к серверам баз данных (по версию 18.12.1 включительно) использовала System.Data.Sqlclient (SDS). Новая версия SQL Server теперь поставляется с библиотеками Microsoft.Data.Sqlclient (MDS). Пакет Microsoft.Data.SqlClient теперь доступен на NuGet и становится основным способом доступа к данным для SQL Server. Этот пакет поддерживает как .NET Core, так и .NET Framework. Создание нового SqlClient в новом пространстве имен позволяет старому System.Data.SqlClient и новому Microsoft.Data.SqlClient жить бок о бок,  хотя это и не происходит автоматически.

MDS меняет способ обработки подключений к SQL Server, что вы могли заметить, обновившись до SSMS 19, а затем подключившись к SQL Server 2022 или более ранним версиям. В частности, в MDS реализована проверка сертификатов, чего раньше не было в SDS. Давайте рассмотрим, как это настраивается и что вы можете увидеть в SSMS 19.x.

Конфигурация сервера

В Configuration Manager перейдите в раздел «SQL Server Network Configuration», затем «Protocols», затем щелкните правой кнопкой мыши и выберите «Properties». В открывшемся окне будет доступна опция принудительного шифрования, значение которой по умолчанию — No:

3a590f7577b5f8513593f5518fea4b79.jpg

Этот параметр существовал и в более ранних версиях SQL Server, и, если указывалось принудительное шифрование, , а проверяемый сертификат не был установлен, драйвер SDS в SSMS 18.x просто не проверял сертификат. Начиная с SSMS 19.x, которая использует драйвер MDS это поведение изменилось.

Окно подключения SSMS

В окне нового подключения к серверу SSMS 19.x после выбора кнопки «Options >>», для сервера с принудительным шифрованием необходимо выбрать опцию «Trust server certificate», которая, как и прежде находится на вкладке свойств подключения:

8ae7fa17f9d2cf30ba268fb3c5cb6437.jpg

В SSMS 19, когда у сервера установлено принудительное шифрование, необходимо пометить чекбокс »Trust Server Certificate». Если этого не сделать, то вы можете столкнуться со следующей ошибкой:

e0a2abc35f5a3f18fac8aed38e30a381.jpg

Также, ошибки при подключении могут возникнуть, если ваш сертификат создан неправильно. Дополнительную информацию можно найти в разделе «Настройка ядра СУБД SQL Server для шифрования подключений». Вот рекомендация из этой области: при создании сертификата используйте параметр -DnsName,  для которого нужно указать DNS-имя сервера. Это DNS-имя будет использоваться для проверки сертификата. Вам также может потребоваться добавить NETBIOS-имя сервера в список альтернативных имен субъектов.  Примеры команд  для создания само-подписного сертификата с дополнительными альтернативными именами субъектов можно найти в описании New-SelfSignedCertificate.

© Habrahabr.ru