Пространство имён Microsoft.Data.SqlClient и совместимость

Пространство имен Microsoft.Data.SqlClient включает поддерживаемый поставщик данных .NET для баз данных, совместимых с SQL Server. Изначально это было ответвление от System.Data.SqlClient, и оно сохраняет знакомую модель программирования ADO.NET, при этом новые функции SQL Server поставляются независимо от среды выполнения .NET.

Используйте Microsoft.Data.SqlClient для новой разработки.

Установка и импорт пространства имён

Добавьте пакет NuGet:

dotnet add package Microsoft.Data.SqlClient

Импортируйте пространство имён:

using Microsoft.Data.SqlClient;

Большинство приложений используют SqlConnection, SqlCommand, SqlParameterSqlDataReader, и SqlTransaction. Для полной публичной поверхности см. ссылку на API Microsoft. Data.SqlClient.

Связь с ADO.NET

Microsoft. Data.SqlClient реализует независимые от провайдера типы из System.Data.Common, включая DbConnection, DbCommand, DbDataReader, и DbTransaction. Также он предоставляет специфические для SQL Server API такие же, как:

  • SqlBulkCopy
  • SqlBatch
  • SqlConnectionStringBuilder
  • SqlConfigurableRetryFactory
  • SqlDependency
  • Поддержка аутентификации, шифрования и типов данных, специфичных для SQL Server

Для получения рекомендаций по выбору независимых от провайдера или специфичных для SqlClient API см. раздел ADO.NET architecture with Microsoft. Data.SqlClient.

Связь с System.Data.SqlClient

System.Data.SqlClientэто старый провайдер, который поставляется с .NET Framework и более ранними версиями .NET. Microsoft.Data.SqlClient использует многие одинаковые типовые имена, но имеет разные пакеты, пространства имён, настройки по умолчанию, функции и политики поддержки.

Не ссылайтесь на обоих провайдеров в новом коде приложения. Типы с одинаковыми названиями из двух пакетов не взаимозаменяемы. Например, System.Data.SqlClient.SqlConnection нельзя передать там, где требуется Microsoft.Data.SqlClient.SqlConnection.

Миграция обычно начинается с добавления пакета Microsoft.Data.SqlClient и изменения ссылок на пространство имён, но также необходимо проверить шифрование соединений, параметры, конфигурацию, транзитивные зависимости и поведение во время выполнения. Перед развертыванием выполните инструкции в статье Переход с System.Data.SqlClient на Microsoft.Data.SqlClient.

Совместимость версий

Версия пакета драйверов независима от версии приложения в .NET и версии движка базы данных. Проверьте все три:

Component Что проверить
Microsoft.Data.SqlClient Выпускная линия поддерживается и содержит функции, используемые вашим приложением.
.NET или .NET Фреймворк Приложение ориентировано на среду выполнения, поддерживаемую этим выпуском драйвера.
База данных, совместимых с SQL Server Версия драйвера поддерживает версию базы данных, а сервер — любые запрошенные функции протокола, такие как TDS 8.0.

Для актуальных матриц см. жизненный цикл поддержки драйверов SqlClient.

Изменения, связанные с версией

Выпуски драйверов могут добавлять API, перемещать опциональные зависимости и менять безопасные настройки по умолчанию. Проверяйте изменения перед каждым незначительным или крупным обновлением.

Вот некоторые примеры:

  • В версии 4.0 для Encrypt по умолчанию установлено значение true.
  • В версии 5.0 были представлены SqlConnectionEncryptOption и Encrypt=Strict для TDS 8.0.
  • В версии 5.2 была представлена функция SqlBatch для поддерживаемых современных целевых платформ .NET.
  • Версия 7.0 переместила аутентификацию Microsoft Entra, предоставляемую драйвером, в Microsoft.Data.SqlClient.Extensions.Azure.

Посмотрите, что нового в Microsoft. Data.SqlClient — ссылки на релизные заметки и обзор обновлений.

Некоторые функции используют типы вне основного пространства имён или опциональные пакеты.

Пространство имён или пакет Purpose
Microsoft.Data.SqlClient.Server Реализации SqlDataRecord и SqlMetaData в SqlClient.
Microsoft.Data.SqlTypes Типы, специфичные для SqlClient, например SqlFileStream, SqlJson и SqlVector<T>.
Microsoft.Data.SqlClient.Diagnostics Строго типизированные данные диагностических событий.
Microsoft.Data.SqlClient.Extensions.Azure Аутентификация Microsoft Entra, предоставляемая драйвером, для версии 7.0 и более поздних версий.
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider Интеграция Azure Key Vault для Always Encrypted

Не делайте выводы о требованиях пакета только по пространству имён. Ознакомьтесь со статьёй с описанием функций и сведениями о зависимостях пакета NuGet для используемой версии драйвера.