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.
Este artigo lista todas as palavras-chave de cadeia de conexão que a Microsoft. Data.SqlClient aceita. Cada palavra-chave também possui uma propriedade de correspondência SqlConnectionStringBuilder . Para uma introdução, padrões comuns e regras de análise sintática, veja Strings de conexão.
Palavras-chave e apelidos não são sensíveis a maiúsculas e minúsculas. Quando você define um valor através de um imóvel de construtor, o construtor escreve a palavra-chave canônica na coluna Palavra-chave .
Definir opções com SqlConnectionStringBuilder
Comece por uma cadeia de conexão base que armazena as configurações do servidor, banco de dados e autenticação. Depois, defina opções específicas de carga de trabalho através das propriedades do construtor. As abas do .NET Framework usam C# 7.3. Para criar um projeto que execute as amostras, veja Criar o projeto.
using Microsoft.Data.SqlClient;
string connectionString =
Environment.GetEnvironmentVariable("SQL_CONNECTION_STRING")
?? throw new InvalidOperationException(
"Set the SQL_CONNECTION_STRING environment variable.");
var builder = new SqlConnectionStringBuilder(connectionString)
{
ApplicationName = "Orders.Worker",
ConnectTimeout = 30,
CommandTimeout = 60,
MaxPoolSize = 50,
};
await using var connection = new SqlConnection(builder.ConnectionString);
await connection.OpenAsync();
await using var command = new SqlCommand("SELECT APP_NAME();", connection);
Console.WriteLine($"APP_NAME(): {await command.ExecuteScalarAsync()}");
Console.WriteLine($"Connection timeout: {connection.ConnectionTimeout}");
Console.WriteLine($"Command timeout: {command.CommandTimeout}");
A saída é:
APP_NAME(): Orders.Worker
Connection timeout: 30
Command timeout: 60
Um novo SqlCommand toma seu tempo padrão a partir da Command Timeout palavra-chave da sua conexão.
Verifique valores padrão
Um novo SqlConnectionStringBuilder reporta o padrão para cada opção. Este programa imprime os padrões que a maioria dos aplicativos revisa:
using Microsoft.Data.SqlClient;
var defaults = new SqlConnectionStringBuilder();
Console.WriteLine($"Connect Timeout: {defaults.ConnectTimeout}");
Console.WriteLine($"Command Timeout: {defaults.CommandTimeout}");
Console.WriteLine($"Connect Retry Count: {defaults.ConnectRetryCount}");
Console.WriteLine($"Connect Retry Interval: {defaults.ConnectRetryInterval}");
Console.WriteLine($"Encrypt: {defaults.Encrypt}");
Console.WriteLine($"Trust Server Certificate: {defaults.TrustServerCertificate}");
Console.WriteLine($"Pooling: {defaults.Pooling}");
Console.WriteLine($"Min Pool Size: {defaults.MinPoolSize}");
Console.WriteLine($"Max Pool Size: {defaults.MaxPoolSize}");
Console.WriteLine($"Connection Idle Timeout: {defaults.IdleTimeout}");
Console.WriteLine($"Load Balance Timeout: {defaults.LoadBalanceTimeout}");
Console.WriteLine($"Packet Size: {defaults.PacketSize}");
Console.WriteLine($"Multi Subnet Failover: {defaults.MultiSubnetFailover}");
Console.WriteLine($"IP Address Preference: {defaults.IPAddressPreference}");
Console.WriteLine($"Pool Blocking Period: {defaults.PoolBlockingPeriod}");
Console.WriteLine($"Application Intent: {defaults.ApplicationIntent}");
Console.WriteLine($"Application Name: {defaults.ApplicationName}");
Console.WriteLine($"Type System Version: {defaults.TypeSystemVersion}");
Console.WriteLine($"Transaction Binding: {defaults.TransactionBinding}");
No .NET, a saída é:
Connect Timeout: 15
Command Timeout: 30
Connect Retry Count: 1
Connect Retry Interval: 10
Encrypt: True
Trust Server Certificate: False
Pooling: True
Min Pool Size: 0
Max Pool Size: 100
Connection Idle Timeout: 300
Load Balance Timeout: 0
Packet Size: 8000
Multi Subnet Failover: False
IP Address Preference: IPv4First
Pool Blocking Period: Auto
Application Intent: ReadWrite
Application Name: Core Microsoft SqlClient Data Provider
Type System Version: Latest
Transaction Binding: Implicit Unbind
Encrypt: True é a Mandatory opção. No .NET Framework, o nome padrão da aplicação é Framework Microsoft SqlClient Provedor de Dados.
Opções de servidor e banco de dados
| Keyword | Aliases | Propriedade do construtor | Padrão | Descrição |
|---|---|---|---|---|
Data Source |
Server, Address, Addr, Network Address |
DataSource |
Vazio | O servidor para se conectar. Aceita um nome de host, host,port, host\instance, (localdb)\instance, e um tcp: prefixo de protocolo ou np: . Para os formulários aceitos, veja Especificar o servidor e o banco de dados. |
Initial Catalog |
Database |
InitialCatalog |
Vazio | O banco de dados para usar após o login. Quando está vazio, o servidor usa o banco de dados padrão do login. |
AttachDbFilename |
Extended Properties, Initial File Name |
AttachDBFilename |
Vazio | O caminho completo de um arquivo de banco de dados primário para anexar, para SQL Server Express e LocalDB. |
User Instance |
None | UserInstance |
false |
Redireciona a conexão para uma instância de usuário do SQL Server Express. Para mais informações, veja SQL Server Express instâncias de usuário. |
Failover Partner |
FailoverPartner |
FailoverPartner |
Vazio | O parceiro de espelhamento do banco de dados pode tentar quando o servidor principal não estiver disponível. O espelhamento de banco de dados está obsoleto. Use grupos de disponibilidade para novas implantações. |
Current Language |
Language |
CurrentLanguage |
Vazio | O nome da linguagem SQL Server para a sessão, como us_english. Controla formatos de data e linguagem de mensagens do sistema. |
Opções de identidade de aplicação
| Keyword | Aliases | Propriedade do construtor | Padrão | Descrição |
|---|---|---|---|---|
Application Name |
App |
ApplicationName |
Core Microsoft SqlClient Data Provider |
O nome que o servidor reporta através APP_NAME() e nas visualizações da sessão. Use um nome estável para cada carga de trabalho implantada. Valores distintos criam pools de conexões distintas. |
Workstation ID |
WorkstationID, WSID |
WorkstationID |
O nome do computador local | O nome do computador cliente que o servidor reporta através HOST_NAME()de . |
Application Intent |
ApplicationIntent |
ApplicationIntent |
ReadWrite |
ReadOnly solicita roteamento de intenção de leitura quando o alvo o suporta. Não torna as declarações somente leitura. Para mais informações, veja Alta disponibilidade e recuperação em caso de desastres. |
Para informar qual framework ou ferramenta abriu uma conexão, use a RegisteredApplication propriedade. Não possui palavra-chave de cadeia de conexão. Para mais informações, veja Reportar a identidade da aplicação.
Opções de autenticação
| Keyword | Aliases | Propriedade do construtor | Padrão | Descrição |
|---|---|---|---|---|
Authentication |
None | Authentication |
Não especificado | O método de autenticação. Para valores aceitos, veja a tabela a seguir. |
Integrated Security |
Trusted_Connection |
IntegratedSecurity |
false |
true, yes, ou sspi usa a identidade do processo atual. |
User ID |
UID, User |
UserID |
Vazio | O nome de login SQL, ou o identificador de usuário ou cliente do Microsoft Entra ID, dependendo de Authentication. |
Password |
PWD |
Password |
Vazio | A senha ou o segredo do cliente para métodos que aceitam um. |
Persist Security Info |
PersistSecurityInfo |
PersistSecurityInfo |
false |
Quando false, o driver remove a senha após SqlConnection.ConnectionString a abertura da conexão. Deixa pra lá false. |
Server SPN |
ServerSPN |
ServerSPN |
Derivado do nome do servidor | Substitui o Nome da Entidade de Serviço (SPN) usado para autenticação integrada com o servidor principal. |
Failover Partner SPN |
FailoverPartnerSPN |
FailoverPartnerSPN |
Derivado do nome de parceiro | Sobrepõe o SPN usado para autenticação integrada ao parceiro de failover. |
Authentication aceita esses valores. O construtor as escreve sem espaços, como ActiveDirectoryDefault, e o analisador aceita ambas as formas.
| Valor | Identity |
|---|---|
Sql Password |
Um login SQL com User ID e Password. |
Active Directory Default |
Uma cadeia de fontes de credenciais, como variáveis de ambiente, identidade gerenciada e login de ferramentas de desenvolvedores. |
Active Directory Managed Identity |
Uma identidade gerenciada. Definido User ID para o ID do cliente de uma identidade atribuída pelo usuário.
Active Directory MSI é um alias. |
Active Directory Workload Identity |
Uma identidade de carga de trabalho do Kubernetes. |
Active Directory Service Principal |
Uma aplicação com User ID definido para o ID do cliente e Password definido para o sigilo do cliente. |
Active Directory Interactive |
Um usuário que faz login por meio de um prompt no navegador. |
Active Directory Device Code Flow |
Um usuário que faz login em outro dispositivo com um código. |
Active Directory Integrated |
O usuário do Windows logado, por meio de uma configuração federada ou contínua de login único. |
Active Directory Password |
Um nome de usuário e senha. Esse método é obsoleto. Use outro método. |
Os métodos Microsoft Entra ID precisam do Microsoft.Data.SqlClient.Extensions.Azure pacote. Para configuração e exemplos, veja a autenticação Microsoft Entra ID e a autenticação do SQL Server.
Opções de criptografia
| Keyword | Aliases | Propriedade do construtor | Padrão | Descrição |
|---|---|---|---|---|
Encrypt |
None | Encrypt |
Mandatory |
Strict usa TDS 8.0 e sempre valida o certificado do servidor.
Mandatory, true, ou yes criptografa a conexão.
Optional, false, ou no criptografa toda a conexão apenas quando o servidor exige. Quando o servidor suporta criptografia, mas não a exige, apenas o pacote de login é criptografado. |
Trust Server Certificate |
TrustServerCertificate |
TrustServerCertificate |
false |
true ignora a validação do certificado do servidor. Ignorado quando Encrypt=Strict. Não o use em produção. |
Host Name In Certificate |
HostNameInCertificate |
HostNameInCertificate |
Vazio | Um nome de reserva para validação de certificado. O SqlClient primeiro valida o certificado contra o nome do servidor em Data Source. Ele verifica Host Name In Certificate apenas quando o nome não coincide, então um valor errado não causa falha quando o nome do servidor já coincide. Não é um certificado de fixação. Para exigir um certificado específico, use Server Certificate. Não muda o destino da rede nem contorna a cadeia de confiança e as verificações de expiração. Deixe-o não definido quando o nome do servidor já corresponder ao do certificado. |
Server Certificate |
ServerCertificate |
ServerCertificate |
Vazio | O caminho de um arquivo PEM, DER ou CER que deve corresponder exatamente ao certificado do servidor. O motorista verifica a correspondência apenas quando valida o certificado, então use-o com Encrypt=Mandatory ou Encrypt=Strict e Trust Server Certificate=false. Um arquivo correspondente substitui a validação de nome de cadeia e de host, então funciona com um certificado autoassinado que o cliente não confia. |
Para as regras completas de validação, veja Criptografia e validação de certificados.
Opções Always Encrypted
| Keyword | Aliases | Propriedade do construtor | Padrão | Descrição |
|---|---|---|---|---|
Column Encryption Setting |
ColumnEncryption |
ColumnEncryptionSetting |
Disabled |
Enabled ativa o modo Sempre Criptografado para a conexão. |
Attestation Protocol |
None | AttestationProtocol |
Não especificado | O protocolo de atestação do enclave: AAS, HGS, ou None. |
Enclave Attestation Url |
None | EnclaveAttestationUrl |
Vazio | O endpoint do serviço de atestação para Always Encrypted com enclaves seguros. |
Opções de rede
| Keyword | Aliases | Propriedade do construtor | Padrão | Descrição |
|---|---|---|---|---|
Multi Subnet Failover |
MultiSubnetFailover |
MultiSubnetFailover |
false |
Tenta todos os endereços IP para os quais o nome do servidor resolve em paralelo. Use-o para ouvintes de grupos de disponibilidade e instâncias de cluster de failover alcançadas via TCP. Não suportado com espelhamento de banco de dados. Instâncias nomeadas dependem da implementação da rede. A implementação gerenciada, que o .NET usa no Linux e macOS e no Windows quando a rede gerenciada está ativada, suporta uma instância nomeada e envia a requisição do SQL Server Browser para todos os endereços resolvidos em paralelo. A implementação nativa no Windows pode rejeitar uma instância nomeada com erro SNI 48. |
IP Address Preference |
IPAddressPreference |
IPAddressPreference |
IPv4First |
A ordem para tentar resolver aborda: IPv4First, IPv6First, ou UsePlatformDefault. |
Packet Size |
PacketSize |
PacketSize |
8000 |
O tamanho do pacote do Fluxo de Dados Tabulares (TDS) em bytes, de 512 a 32.768. |
Um comutador AppContext em todo o processo pode mudar o Multi Subnet Failover padrão para true. Para mais informações, veja as comutações AppContext no SqlClient.
Opções de timeout
| Keyword | Aliases | Propriedade do construtor | Padrão | Descrição |
|---|---|---|---|---|
Connect Timeout |
Connection Timeout, ConnectTimeout, Timeout |
ConnectTimeout |
15 |
Segundos para esperar por uma conexão, incluindo a espera por uma conexão em pool quando a piscina está cheia.
0 espera indefinidamente. |
Command Timeout |
None | CommandTimeout |
30 |
O padrão CommandTimeout em segundos para comandos criados na conexão.
0 espera indefinidamente. |
Connect Timeout Não limita a execução da consulta.
Command Timeout Não limita o login nem a espera por uma conexão em pool. Passe a CancellationToken para chamadas assíncronas para que o chamador possa parar de esperar antes que qualquer um dos tempos expire.
Opções de recuperação de conexão
| Keyword | Aliases | Propriedade do construtor | Padrão | Descrição |
|---|---|---|---|---|
Connect Retry Count |
ConnectRetryCount |
ConnectRetryCount |
1 |
Tenta novamente após uma falha transitória qualificada durante a primeira abertura e ao restaurar uma conexão ociosa quebrada.
0 Desliga as tentativas novamente. Os valores válidos são de 0 a 255. |
Connect Retry Interval |
ConnectRetryInterval |
ConnectRetryInterval |
10 |
Segundos entre tentativas de retentativa. Os valores válidos são de 1 a 60. |
Quando Connect Retry Count é 1, que é o padrão, o driver usa 2 para endpoints SQL do Azure e 5 para endpoints serverless SQL do Azure Synapse Analytics ao restaurar uma conexão idle quebrada. A primeira abertura usa o valor como definido, então o padrão permite uma tentativa em cada endpoint. O driver usa qualquer outro valor definido em ambos os casos.
Essas palavras-chave não tentam novamente um comando que falha enquanto está rodando. Para pular a retentativa embutida para uma abertura, chame uma Open sobrecarga com OpenWithoutRetry. Para políticas personalizadas, veja Lógica de retentativa configurável. Retente um comando somente quando repeti-lo for seguro.
Opções de agrupamento
| Keyword | Aliases | Propriedade do construtor | Padrão | Descrição |
|---|---|---|---|---|
Pooling |
None | Pooling |
true |
Reutiliza conexões físicas para combinar cadeias de conexão. |
Min Pool Size |
None | MinPoolSize |
0 |
Conexões físicas que a piscina mantém abertas depois de criada. |
Max Pool Size |
None | MaxPoolSize |
100 |
As conexões mais físicas em uma só piscina. Deve ser pelo menos 1. |
Connection Idle Timeout |
None | IdleTimeout |
300 |
Segundos em que uma conexão pode ficar ociosa na piscina antes que ela a feche.
0 Desliga a expiração do repouso. Aplicado somente quando a Switch.Microsoft.Data.SqlClient.UseLegacyIdleTimeoutBehavior troca do AppContext é false. Por padrão, ele é true. |
Load Balance Timeout |
Connection Lifetime |
LoadBalanceTimeout |
0 |
A idade máxima em segundos de uma conexão retornava à piscina. Uma conexão antiga está fechada.
0 Desliga o limite. |
Pool Blocking Period |
PoolBlockingPeriod |
PoolBlockingPeriod |
Auto |
Se o pool relança uma falha de login em cache por um curto período: Auto, AlwaysBlock, ou NeverBlock.
Autodesativa o bloqueio para endpoints do SQL do Azure. |
Cada cadeia de conexão distinta tem seu próprio pool. Para chaves de pool, limpeza e tempo ocioso, veja pool de conexões do SQL Server.
Opções de transação e sessão
| Keyword | Aliases | Propriedade do construtor | Padrão | Descrição |
|---|---|---|---|---|
Enlist |
None | Enlist |
true |
Registra a conexão na transação ambiente System.Transactions quando ela abre. |
Transaction Binding |
None | TransactionBinding |
Implicit Unbind |
Implicit Unbind Desconecta a conexão quando a transação dos praças termina.
Explicit Unbind Mantém-no conectado até que a conexão se fecha ou o código o desconecte. |
Multiple Active Result Sets |
MultipleActiveResultSets |
MultipleActiveResultSets |
false |
Permite mais de um lote ativo em uma única conexão. |
Type System Version |
None | TypeSystemVersion |
Latest |
O tipo de servidor que o driver expõe. Aceita Latest, SQL Server 2012, SQL Server 2008, e SQL Server 2005. Deixe em Latest. |
Replication |
None | Replication |
false |
Identifica a conexão como uma conexão de replicação. |
Opções apenas para o framework .NET
Essas palavras-chave são aceitas apenas no .NET Framework. No .NET, o construtor lança NotSupportedException e SqlConnection lança ArgumentException.
| Keyword | Aliases | Propriedade do construtor | Padrão | Descrição |
|---|---|---|---|---|
Network Library |
Net, Network |
NetworkLibrary |
Vazio | A biblioteca da rede. Não combine com o prefixo ou tcp:np: em Data Source, porque a conexão falha. No .NET, prefixe Data Source com tcp: ou np: em vez disso. |
Connection Reset |
None | ConnectionReset |
true |
Obsolete. |
Transparent Network IP Resolution |
TransparentNetworkIPResolution |
TransparentNetworkIPResolution |
true |
Obsolete. |
Palavras-chave não suportadas
| Keyword | Result |
|---|---|
Context Connection |
Context Connection=true
InvalidOperationExceptionlança . Microsoft. Data.SqlClient não suporta conexões contextuais SQL CLR. |
Asynchronous Processing |
Gera ArgumentException: Keyword not supported. Métodos assíncronos funcionam sem ele. |
Driver, Provider |
Gera ArgumentException: Keyword not supported. Essas palavras-chave pertencem ao ODBC e ao OLE DB. |
Regras de validação
SqlConnectionStringBuilder rejeita palavras-chave desconhecidas e muitos valores inválidos quando você as configura.
SqlConnectionRealiza mais verificações quando você define sua cadeia de conexão, incluindo valores únicos que o construtor aceita e combinações de palavras-chave. Uma string que o construtor aceita ainda pode falhar quando você cria a conexão.
O construtor e a conexão rejeitam esses valores com ArgumentException:
-
Connect Timeout,Command Timeout,Load Balance Timeout,Connection Idle Timeout, ouMin Pool Sizemenos que 0. -
Max Pool Sizemenos de 1. -
Packet Sizefora de 512 a 32.768. -
Connect Retry Countfora de 0 a 255. -
Connect Retry Intervalfora de 1 a 60. - Uma palavra-chave que não está neste artigo.
SqlConnection também rejeita esses valores com ArgumentException, mesmo que o construtor os aceite:
-
Type System VersionExceto ,LatestSQL Server 2012,SQL Server 2008, ouSQL Server 2005. -
Transaction Bindingalém deImplicit UnbindouExplicit Unbind. - Um valor maior que o limite TDS para , , , , , , , ,
Workstation ID, , ouAttachDBFilename.PasswordUser IDInitial CatalogFailover PartnerData SourceCurrent LanguageApplication Name
SqlConnection também rejeita essas combinações com ArgumentException:
-
Min Pool Sizemaior queMax Pool Size. -
Failover PartnersemInitial Catalog. -
Failover PartnercomMulti Subnet Failover=true,User Instance=true, ouApplication Intent=ReadOnly. -
AuthenticationcomIntegrated Security=true. -
PasswordcomActive Directory Integrated,Active Directory Interactive,Active Directory Managed Identity,Active Directory MSI,Active Directory Default, , ouActive Directory Workload Identity. -
User IDouPasswordcomActive Directory Device Code Flow.
Mudanças na opção de revisão
Antes de mudar uma opção em produção:
- Registre a cadeia de conexão atual, a versão do driver, o tipo de endpoint e o problema que você está resolvendo.
- Mude uma opção de cada vez.
- Teste o estabelecimento de conexão, a autenticação, a validação de certificado, o pool de conexões, o failover, o cancelamento e a execução de consultas.
- Meça a latência da conexão, as esperas do pool e os números de erro.
- Confirme a configuração em cada instância implantada.
Uma cadeia de conexão alterada cria um novo pool. Durante um lançamento em etapas, pools antigos e novos existem ao mesmo tempo, então o número total de conexões físicas ao servidor pode aumentar.