Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
ADO.NET é o modelo de acesso a dados incorporado ao .NET. Microsoft. Data.SqlClient implementa esse modelo para bancos de dados compatíveis com SQL Server e adiciona capacidades específicas do SQL Server.
A página de destino da Microsoft. Data.SqlClient fornece o mapa de recursos do driver e a linha base de produção. Este artigo explica como o driver se encaixa no ADO.NET.
Abstrações ADO.NET e tipos SqlClient
O ADO.NET define abstrações independentes do provedor no System.Data.Common namespace. Microsoft. Data.SqlClient fornece implementações concretas.
| Abstração ADO.NET | Tipo SqlClient | Purpose |
|---|---|---|
| DbConnection | SqlConnection | Abre uma conexão lógica para um banco de dados. |
| DbCommand | SqlCommand | Executa texto SQL ou um procedimento armazenado. |
| DbParameter | SqlParameter | Envia um valor digitado separadamente do texto do comando. |
| DbDataReader | SqlDataReader | Os fluxos resultam em linhas para frente a partir do servidor. |
| DbTransaction | SqlTransaction | Agrupa comandos em uma única transação atômica. |
| DbDataAdapter | SqlDataAdapter | Preenche e atualiza objetos desconectados DataSet e DataTable. |
| DbBatch | SqlBatch | Envia vários comandos em lote nas plataformas de destino compatíveis. |
Programe contra abstrações ADO.NET quando uma biblioteca precisa suportar múltiplos provedores de banco de dados. Use os tipos SqlClient quando uma aplicação tem como alvo SQL Server e precisa de recursos específicos do provedor.
Acesso a dados conectados
O acesso conectado mantém uma conexão disponível enquanto um comando é executado e enquanto o aplicativo lê seus resultados.
Um pedido comum segue esta sequência:
- Crie a
SqlConnectiona partir de uma cadeia de conexão. - Abra a conexão.
- Crie um
SqlCommande adicioneSqlParametervalores. - Execute o comando.
- Processe um valor escalar, o número de linhas afetadas ou
SqlDataReader. - Libere o leitor, o comando e a conexão.
Use o acesso conectado para a maioria das APIs web, serviços, trabalhadores e aplicações de linha de comando.
SqlDataReader transmite linhas em fluxo e costuma usar menos memória do que carregar todo o resultado em um DataSet.
Abrir e descartar um SqlConnection para cada unidade de trabalho é o padrão normal. O pool de conexões reutiliza a conexão física subjacente. Não mantenha uma conexão global aberta durante toda a vida útil de um aplicativo.
Acesso de dados desconectado
SqlDataAdaptertransfere dados entre o SQL Server e um arquivo em memória DataSet ou DataTable. A aplicação pode fechar a conexão enquanto lê ou altera os dados em memória, e então se reconectar para enviar atualizações.
Use acesso desconectado quando precisar:
- Vinculação de dados a
DataSetouDataTable. - Relações e restrições na memória.
- Edições offline que são reconciliadas depois.
- Compatibilidade com uma aplicação existente construída em torno de DataAdapters.
Para novos serviços orientados a requisições, comece com SqlCommand e SqlDataReader a menos que você precise do modelo de objetos desconectados.
Recursos específicos do SQL Server
Microsoft. Data.SqlClient adiciona APIs e comportamentos de conexão que não fazem parte do contrato ADO.NET independente do provedor:
- Autenticação do Microsoft Entra e retornos de chamada de token de acesso.
- TDS 8.0 criptografia rigorosa e opções de certificado do SQL Server.
- Enclaves sempre criptografados e seguros.
-
SqlBulkCopypara carregamento de dados de alta taxa de transferência. - Parâmetros com valor tabular.
- Tipos de dados do SQL Server, incluindo JSON e tipos vetoriais.
- Lógica de retentativa configurável.
- Diagnósticos, estatísticas e contadores do SQL Server.
- Grupo de disponibilidade e opções de conexão por failover.
Usar esses recursos vincula esse código à Microsoft. Data.SqlClient. Mantenha o código específico do provedor atrás de um limite de acesso aos dados se o restante da aplicação deve permanecer independente do provedor.
Vida útil do objeto e concorrência
Descarte conexões, comandos, leitores, transações e objetos de cópia em massa rapidamente. Use await using com código assíncrono quando um tipo implementa IAsyncDisposable.
SqlConnection, SqlCommand, SqlDataReader, e SqlTransaction não suportam uso simultâneo de múltiplas threads. Dê a cada operação concorrente sua própria conexão e confie no pooling de conexão. Múltiplos Conjuntos de Resultados Ativos (MARS) permite mais de um conjunto de resultados ativo em uma conexão, mas não torna os objetos SqlClient seguros para uso em threads.
Pacotes e espaços de nomes
Instale o Microsoft.Data.SqlClient pacote NuGet e importe o Microsoft.Data.SqlClient namespace. O driver é lançado independentemente do .NET, então seus cronogramas de recursos, lançamento e suporte diferem do runtime do .NET.
System.Data.SqlClient é o provedor mais antigo. Use o Microsoft.Data.SqlClient em novos projetos. Para uma aplicação existente, siga Migrar de System.Data.SqlClient para Microsoft. Data.SqlClient.