namespace Microsoft.Data.SqlClient e compatibilidade

O Microsoft.Data.SqlClient namespace contém o provedor de dados .NET suportado para bancos de dados compatíveis com SQL Server. Começou como um fork de System.Data.SqlClient e mantém o modelo de programação ADO.NET familiar, ao mesmo tempo em que disponibiliza novos recursos do SQL Server independentemente do runtime do .NET.

Use Microsoft.Data.SqlClient para novo desenvolvimento.

Instale e importe o namespace

Adicione o pacote NuGet:

dotnet add package Microsoft.Data.SqlClient

Importar o namespace:

using Microsoft.Data.SqlClient;

A maioria das aplicações usa SqlConnection, SqlCommand, SqlParameter, SqlDataReader, e SqlTransaction. Para a superfície pública completa, veja a referência da API Microsoft. Data.SqlClient.

Relação com o ADO.NET

Microsoft. Data.SqlClient implementa tipos independentes do provedor a partir de System.Data.Common, incluindo DbConnection, DbCommand, DbDataReader, e DbTransaction. Também oferece APIs específicas para o SQL Server, tais como:

  • SqlBulkCopy
  • SqlBatch
  • SqlConnectionStringBuilder
  • SqlConfigurableRetryFactory
  • SqlDependency
  • Autenticação, criptografia e suporte a tipos de dados específicos do SQL Server

Para orientações sobre a escolha de APIs independentes do provedor ou específicas de SqlClient, veja Arquitetura ADO.NET com Microsoft. Data.SqlClient.

Relação com System.Data.SqlClient

System.Data.SqlClienté o provedor mais antigo que vem com o .NET Framework e versões anteriores de .NET. Microsoft.Data.SqlClient Usa muitos dos mesmos nomes de tipos, mas possui pacotes, namespaces, padrão, recursos e políticas de suporte diferentes.

Não faça referência a ambos os provedores no novo código da aplicação. Tipos com o mesmo nome dos dois pacotes não são intercambiáveis. Um System.Data.SqlClient.SqlConnection, por exemplo, não pode ser passado onde um Microsoft.Data.SqlClient.SqlConnection é exigido.

A migração geralmente começa adicionando o Microsoft.Data.SqlClient pacote e alterando as referências do namespace, mas você também deve revisar a criptografia da conexão, parâmetros, configuração, dependências transitivas e comportamento em tempo de execução. Siga Migrar de System.Data.SqlClient para Microsoft.Data.SqlClient antes de implantar.

Compatibilidade entre versões

A versão do pacote de driver é independente da versão .NET da aplicação e da versão do motor de banco de dados. Confira os três:

Component O que verificar
Microsoft.Data.SqlClient A linha de lançamento é suportada e contém os recursos que seu aplicativo utiliza.
.NET ou .NET Framework O aplicativo tem como alvo um runtime suportado por essa liberação do driver.
Banco de dados compatível com SQL Server A versão do driver suporta a versão do banco de dados e o servidor suporta qualquer recurso de protocolo solicitado, como o TDS 8.0.

Para matrizes atuais, veja o ciclo de vida do suporte ao driver SqlClient.

Alterações específicas à versão

As versões de drivers podem adicionar APIs, mover dependências opcionais e alterar padrões de segurança. Revise as mudanças antes de cada atualização menor ou maior.

Os exemplos incluem:

  • A versão 4.0 mudou Encrypt para padrão para true.
  • A versão 5.0 introduziu SqlConnectionEncryptOption e Encrypt=Strict para TDS 8.0.
  • A versão 5.2 introduziu SqlBatch em destinos .NET modernos compatíveis.
  • A versão 7.0 moveu a autenticação do Microsoft Entra fornecida pelo driver para Microsoft.Data.SqlClient.Extensions.Azure.

Veja O que há de novo em Microsoft.Data.SqlClient para links para as notas de versão e um resumo da atualização.

Alguns recursos usam tipos fora do namespace principal ou pacotes opcionais.

Namespace ou pacote Purpose
Microsoft.Data.SqlClient.Server Implementações SqlClient de SqlDataRecord e SqlMetaData.
Microsoft.Data.SqlTypes Tipos específicos de SqlClient, como SqlFileStream, SqlJson, e SqlVector<T>.
Microsoft.Data.SqlClient.Diagnostics Payloads de eventos diagnósticos fortemente tipados.
Microsoft.Data.SqlClient.Extensions.Azure Autenticação do Microsoft Entra fornecida pelo driver para a versão 7.0 e versões posteriores.
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider Integração com Azure Key Vault para Always Encrypted.

Não infira os requisitos do pacote apenas a partir de um namespace. Consulte o artigo sobre o recurso e as informações de dependência do pacote NuGet referentes à versão do driver que você usa.