Microsoft。Data.SqlClient 命名空間與相容性

命名Microsoft.Data.SqlClient空間包含支援的 .NET 資料提供者,適用於相容於 SQL Server 的資料庫。 它最初是從 System.Data.SqlClient 分支而來,並保留了大家熟悉的 ADO.NET 程式設計模型,同時可在不依賴 .NET 執行階段的情況下獨立推出新的 SQL Server 功能。

請使用 Microsoft.Data.SqlClient 進行新開發。

安裝並匯入命名空間

新增 NuGet 套件:

dotnet add package Microsoft.Data.SqlClient

匯入命名空間:

using Microsoft.Data.SqlClient;

大多數應用使用 SqlConnectionSqlCommandSqlParameterSqlDataReaderSqlTransaction和 。 完整公開表面,請參閱 Microsoft.Data.SqlClient API 參考資料

與 ADO.NET 的關係

Microsoft.Data.SqlClient 實作來自 System.Data.Common 的提供者無關型別,包括 DbConnectionDbCommandDbDataReaderDbTransaction。 它也提供 SQL Server 專屬的 API,例如:

  • SqlBulkCopy
  • SqlBatch
  • SqlConnectionStringBuilder
  • SqlConfigurableRetryFactory
  • SqlDependency
  • SQL Server 專屬的認證、加密與資料型別支援

關於選擇提供者獨立或 SqlClient 專用 API 的指引,請參閱 Microsoft 的 ADO.NET 架構。Data.SqlClient

與 System.Data.SqlClient 的關係

System.Data.SqlClient是較早期的供應商,隨附 .NET Framework 及早期 .NET 版本。 Microsoft.Data.SqlClient 使用許多相同的類型名稱,但套件、命名空間、預設值、功能及支援政策不同。

不要在新的申請碼中提及兩個提供者。 兩個套件中同名的類型不能互換。 例如,當某處需要 Microsoft.Data.SqlClient.SqlConnection 時,就無法傳遞 System.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 預設改 Encrypttrue
  • 5.0 版引入了用於 TDS 8.0 的 SqlConnectionEncryptOptionEncrypt=Strict
  • 版本 5.2 在支援的現代 .NET 目標上引入了 SqlBatch
  • 7.0 版本將驅動程式提供的 Microsoft Entra 認證移至 Microsoft.Data.SqlClient.Extensions.Azure

請參閱 Microsoft.Data.SqlClient 的新功能,以取得發布說明連結及升級摘要。

部分功能使用主命名空間外的型別或選用套件。

命名空間或套件 Purpose
Microsoft.Data.SqlClient.Server SqlMetaDataSqlDataRecord 的 SqlClient 實作。
Microsoft.Data.SqlTypes SqlClient 專屬型別,例如 SqlFileStreamSqlJsonSqlVector<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 套件相依性資訊。