Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
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: Um IP é tentado, 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 uma versão de linha tem um valor nulo, SqlDataReader retorna um DBNull valor em vez de um 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);