Espace de noms Microsoft.Data.SqlClient et compatibilité

L’espace Microsoft.Data.SqlClient de noms contient le fournisseur de données .NET pris en charge pour les bases de données compatibles avec SQL Server. Il est issu d’un fork de System.Data.SqlClient et conserve le modèle de programmation ADO.NET familier, tout en proposant de nouvelles fonctionnalités de SQL Server indépendamment du runtime .NET.

Utilisez Microsoft.Data.SqlClient pour la nouvelle conception.

Installer et importer l’espace de noms

Ajoutez le package NuGet :

dotnet add package Microsoft.Data.SqlClient

Importez l’espace de noms :

using Microsoft.Data.SqlClient;

La plupart des applications utilisent SqlConnection, SqlCommand, SqlParameter, SqlDataReader, et SqlTransaction. Pour la surface publique complète, voir la référence de l’API Microsoft. Data.SqlClient.

Lien avec ADO.NET

Microsoft. Data.SqlClient implémente des types indépendants du fournisseur issus de System.Data.Common, y compris DbConnection, DbCommand, DbDataReader, et DbTransaction. Il fournit également des API spécifiques à SQL Server telles que :

  • SqlBulkCopy
  • SqlBatch
  • SqlConnectionStringBuilder
  • SqlConfigurableRetryFactory
  • SqlDependency
  • Authentification spécifique à SQL Server, chiffrement et support des types de données

Pour des conseils sur le choix d’API indépendantes du fournisseur ou spécifiques à SqlClient, voir l’architecture ADO.NET avec Microsoft. Data.SqlClient.

Relation avec System.Data.SqlClient

System.Data.SqlClientest le fournisseur plus ancien qui propose le cadre .NET et les versions antérieures de .NET. Microsoft.Data.SqlClient utilise de nombreux noms de type similaires, mais possède des paquets, espaces de noms, paramètres par défaut, fonctionnalités et politiques de support différents.

Ne mentionnez pas les deux fournisseurs dans le nouveau code de la demande. Les types portant le même nom issus des deux paquets ne sont pas interchangeables. Un System.Data.SqlClient.SqlConnection, par exemple, ne peut pas être transmis lorsqu’un Microsoft.Data.SqlClient.SqlConnection est requis.

La migration commence généralement par l’ajout du package Microsoft.Data.SqlClient et la modification des références d’espace de noms, mais vous devez également examiner le chiffrement des connexions, les paramètres, la configuration, les dépendances transitives et le comportement à l’exécution. Suivez Migrer de System.Data.SqlClient vers Microsoft. Data.SqlClient avant de déployer.

Compatibilité des versions

La version du package de pilotes est indépendante de la version .NET de l'application et de la version du moteur de base de données. Vérifiez les trois :

Composant Points à vérifier
Microsoft.Data.SqlClient La ligne de publication est prise en charge et contient les fonctionnalités utilisées par votre application.
.NET ou .NET Framework L’application cible un temps d’exécution supporté par cette version du pilote.
Base de données compatible SQL Server La version du pilote prend en charge la version de la base de données et le serveur prend en charge toute fonctionnalité de protocole demandée, comme TDS 8.0.

Pour les matrices actuelles, voir le cycle de vie du support du pilote SqlClient.

Modifications spécifiques à la version

Les versions de pilotes peuvent ajouter des API, déplacer des dépendances optionnelles et modifier des paramètres sécurisés. Passez en revue les changements avant chaque mise à jour mineure ou majeure.

Voici quelques exemples :

  • La version 4.0 a été modifiée pour utiliser true par défaut à la place de Encrypt.
  • La version 5.0 a introduit SqlConnectionEncryptOption et Encrypt=Strict pour TDS 8.0.
  • La version 5.2 a introduit SqlBatch pour les plateformes .NET modernes prises en charge.
  • La version 7.0 a déplacé l’authentification Microsoft Entra fournie par le pilote dans Microsoft.Data.SqlClient.Extensions.Azure.

Découvrez les nouveautés chez Microsoft. Data.SqlClient pour les liens des notes de mise à jour et un résumé de mise à jour.

Certaines fonctionnalités utilisent des types en dehors de l’espace de noms principal ou des packages optionnels.

Espace de noms ou paquetage Purpose
Microsoft.Data.SqlClient.Server Implémentations SqlClient de SqlDataRecord et SqlMetaData.
Microsoft.Data.SqlTypes Types spécifiques à SqlClient tels que SqlFileStream, SqlJson, et SqlVector<T>.
Microsoft.Data.SqlClient.Diagnostics Charges utiles d’événements de diagnostic fortement typées.
Microsoft.Data.SqlClient.Extensions.Azure Authentification Microsoft Entra fournie par le pilote pour la version 7.0 et ultérieure.
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider Intégration Azure Key Vault pour Always Encrypted.

N’inférez pas les exigences du package uniquement à partir d’un espace de noms. Suivez l’article de fonctionnalité et les informations sur les dépendances du paquet NuGet pour la version du pilote que vous utilisez.