Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: .NET Framework
.NET
.NET Standard
A classe AppContext permite que SqlClient forneça novas funcionalidades enquanto continua a oferecer suporte a chamadores que dependem do comportamento anterior. Os usuários podem desativar uma alteração no comportamento definindo opções específicas do AppContext.
Ativar MultiSubnetFailover por padrão
Aplica-se a: .NET Framework; .NET; .NET Standard
(Disponível a partir da versão 7.0)
Para definir MultiSubnetFailover=true globalmente sem modificar as cadeias de ligação individuais, pode definir o interruptor AppContext "Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault" para true no arranque da aplicação:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault", true);
Também podes ativar este interruptor na tua App.Config:
<runtime>
<AppContextSwitchOverrides value="Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault=true" />
</runtime>
Quando ativadas, todas as ligações comportam-se como se MultiSubnetFailover=true estivessem definidas na cadeia de ligação. Este interruptor está desativado por defeito.
Ativar multiplexação de pacotes para leituras assíncronas
Aplica-se a: .NET Framework; .NET; .NET Standard
(Disponível a partir da versão 7.0)
A multiplexação de pacotes melhora o desempenho para grandes operações de leitura assíncrona, como ExecuteReaderAsync em grandes conjuntos de resultados, cenários de streaming ou recuperação massiva de dados. Esta funcionalidade é controlada por dois interruptores AppContext opt-in. Configurar ambos os switches para false ativa o novo caminho de processamento assíncrono:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseCompatibilityAsyncBehaviour", false);
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseCompatibilityProcessSni", false);
Por defeito, ambos os switches são true, o que preserva o comportamento existente (compatível).
Ativar extensão da funcionalidade User Agent
Aplica-se a: .NET Framework; .NET; .NET Standard
(Disponível a partir da versão 7.0)
Quando o interruptor AppContext "Switch.Microsoft.Data.SqlClient.EnableUserAgent" está ativado, o driver envia os detalhes do agente de utilizador para o servidor como parte da ligação. Esta informação ajuda na resolução de problemas e na quantificação do uso do driver por versão e sistema operativo. Este interruptor está desativado por defeito. Para o ativar, defina o interruptor AppContext para true no arranque da aplicação:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.EnableUserAgent", true);
Ativando o comportamento de truncamento decimal
Aplica-se a: .NET Framework; .NET; .NET Standard
A partir de Microsoft.Data.SqlClient 2.0, os dados decimais são arredondados por padrão, como é feito pelo SQL Server. Para habilitar o comportamento anterior de truncamento, você pode definir a opção AppContext "Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal" como true na inicialização do aplicativo:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal", true);
Habilitando a rede gerenciada no Windows
Aplica-se a: .NET; .NET Standard
(Disponível a partir da versão 2.0)
No Windows, SqlClient usa uma implementação nativa da interface de rede SNI por padrão. Para habilitar o uso de uma implementação SNI gerenciada, você pode definir a opção AppContext "Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows" para true na inicialização do aplicativo:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows", true);
Essa opção alterna o comportamento do driver para usar uma implementação de rede gerenciada em projetos .NET Core 2.1+ e .NET Standard 2.0+ no Windows, eliminando todas as dependências em bibliotecas nativas para a biblioteca Microsoft.Data.SqlClient. É apenas para fins de teste e depuração.
Observação
Existem algumas diferenças conhecidas quando comparado com a implementação nativa. Por exemplo, a implementação gerenciada não oferece suporte à Autenticação do Windows que não seja de domínio.
Desativando a resolução IP de rede transparente
Aplica-se a: .NET Framework
A Resolução IP de Rede Transparente (TNIR) é uma revisão do recurso MultiSubnetFailover existente. TNIR afeta a sequência de conexão do driver no caso em que o primeiro IP resolvido do nome do host não responde e há vários IPs associados ao nome do host. TNIR interage com MultiSubnetFailover para fornecer as seguintes três sequências de conexão:
- 0: É efetuada uma tentativa com um IP, seguido por todos os IPs em paralelo
- 1: Todos os IPs são tentados em paralelo
- 2: Todos os IPs são tentados um após o outro
| TransparentNetworkIPResolution | MultiSubnetFailover | Comportamento |
|---|---|---|
| Verdade | Verdade | 1 |
| Verdade | Falso | 0 |
| Falso | Verdade | 1 |
| Falso | Falso | 2 |
TransparentNetworkIPResolution está habilitado por padrão. MultiSubnetFailover está desabilitado por padrão. Para desativar o TNIR, você pode definir a opção AppContext "Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString" para true na inicialização do aplicativo:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString", true);
Para obter mais informações sobre como definir essas propriedades, consulte a documentação da propriedade SqlConnection.ConnectionString.
Ativar um tempo limite mínimo durante o login
Aplica-se a: .NET Framework; .NET; .NET Standard
Para evitar que uma tentativa de login aguarde indefinidamente, você pode definir a opção AppContext Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin como true na inicialização do aplicativo:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin", false);
Desativar o comportamento de bloqueio do ReadAsync
Aplica-se a: .NET Framework; .NET; .NET Standard
A partir da versão 3.0, o ReadAsync é executado de forma assíncrona. As versões anteriores executam o ReadAsync de forma síncrona e bloqueiam o thread de chamada no .NET Framework. Para controlar esse comportamento de bloqueio, você pode definir a opção AppContext Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking para true ou false na inicialização do aplicativo:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking", false);
Ativando o comportamento nulo da versão de linha
Aplica-se a: .NET Framework; .NET; .NET Standard
A partir da versão 3.0, quando um rowversion tem um valor nulo, SqlDataReader retorna um DBNull em vez de um valor vazio byte[]. Para habilitar o comportamento herdado de retornar um vazio byte[], habilite a opção AppContext Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior na inicialização do aplicativo.
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior", true);
Suprimir aviso TLS inseguro
Aplica-se a: .NET Framework; .NET; .NET Standard
(Disponível a partir da versão 4.0.1)
Ao usar Encrypt=false na cadeia de conexão, um aviso de segurança é enviado para o console se a versão TLS for 1.2 ou inferior. Esse aviso pode ser suprimido ativando a seguinte opção AppContext na inicialização do aplicativo:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.SuppressInsecureTLSWarning", true);
Ignorar parceiro de failover especificado pelo servidor
Aplica-se a: .NET Framework; .NET; .NET Standard
(Disponível a partir das versões 5.1.8, 6.0.4 e 6.1.3)
Após o failover, as informações do parceiro de failover fornecidas pelo servidor têm preferência sobre as informações do parceiro de failover fornecidas na string de conexão. Para ignorar as informações do parceiro de failover fornecidas pelo servidor e considerar apenas as informações do parceiro de failover fornecidas na string de conexão, habilite esta opção AppContext na inicialização da aplicação:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner", true);