Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: .NET Framework
.NET
.NET Standard
Scarica ADO.NET
La classe AppContext consente a SqlClient di fornire nuove funzionalità continuando a supportare i chiamanti che dipendono dal comportamento precedente. Gli utenti possono rifiutare esplicitamente una modifica di comportamento impostando opzioni di AppContext specifiche.
Abilitare MultiSubnetFailover per impostazione predefinita
Si applica a: .NET Framework; .NET; .NET Standard
(Disponibile a partire dalla versione 7.0)
Per impostare MultiSubnetFailover=true a livello globale senza modificare singole stringhe di connessione, è possibile impostare l'opzione AppContext "Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault" su true all'avvio dell'applicazione:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault", true);
È anche possibile abilitare questa opzione in App.Config:
<runtime>
<AppContextSwitchOverrides value="Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault=true" />
</runtime>
Se abilitata, tutte le connessioni si comportano come se MultiSubnetFailover=true fosse impostata nella stringa di connessione. Questa opzione è disabilitata per impostazione predefinita.
Abilitare il multiplexing dei pacchetti per le letture asincrone
Si applica a: .NET Framework; .NET; .NET Standard
(Disponibile a partire dalla versione 7.0)
Il multiplexing dei pacchetti migliora le prestazioni per operazioni di lettura asincrone di grandi dimensioni, ad ExecuteReaderAsync esempio con set di risultati di grandi dimensioni, scenari di streaming o recupero di dati in blocco. Questa funzionalità è controllata da due interruttori opt-in AppContext. L'impostazione di entrambe le opzioni su false consente il nuovo percorso di elaborazione asincrono:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseCompatibilityAsyncBehaviour", false);
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseCompatibilityProcessSni", false);
Per impostazione predefinita, entrambe le opzioni sono true, che mantiene il comportamento esistente (compatibile).
Abilitare l'estensione della funzionalità Agente utente
Si applica a: .NET Framework; .NET; .NET Standard
(Disponibile a partire dalla versione 7.0)
Quando l'opzione AppContext "Switch.Microsoft.Data.SqlClient.EnableUserAgent" è abilitata, il driver invia i dettagli dell'agente utente al server come parte della connessione. Queste informazioni consentono di risolvere i problemi e quantificare l'utilizzo dei driver in base alla versione e al sistema operativo. Questa opzione è disabilitata per impostazione predefinita. Per abilitarla, impostare l'opzione AppContext su true all'avvio dell'applicazione:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.EnableUserAgent", true);
Abilitazione del comportamento di troncamento decimale
Si applica a: .NET Framework; .NET; .NET Standard
A partire da Microsoft.Data.SqlClient 2.0, i dati decimali vengono arrotondati per impostazione predefinita, come avviene in SQL Server. Per abilitare il comportamento di troncamento precedente, è possibile impostare l'opzione di AppContext "Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal" su true all'avvio dell'applicazione:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal", true);
Abilitazione di reti gestite in Windows
Si applica a: .NET; .NET Standard
Disponibile solo a partire dalla versione 2.0.
In Windows SqlClient usa un'implementazione nativa dell'interfaccia di rete SNI per impostazione predefinita. Per abilitare l'uso dell'implementazione di SNI gestita, è possibile impostare l'opzione di AppContext "Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows" su true all'avvio dell'applicazione:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows", true);
Questa opzione attiva o disattiva il comportamento del driver in modo da usare un'implementazione di rete gestita in progetti .NET Core 2.1+ e .NET Standard 2.0+ in Windows, eliminando tutte le dipendenze dalle librerie native per la libreria Microsoft.Data.SqlClient. Questa opzione viene usata solo per scopi di test e debug.
Nota
Esistono alcune differenze note rispetto all'implementazione nativa. Ad esempio, l'implementazione gestita non supporta l'autenticazione Windows non di dominio.
Disattivazione della risoluzione trasparente dell'IP di rete
Si applica a: .NET Framework
La Risoluzione Trasparente dell'IP di Rete (TNIR) è una revisione della funzionalità MultiSubnetFailover esistente. TNIR influisce sulla sequenza di connessione del driver nel caso in cui il primo IP risolto del nome host non risponda e al nome host siano associati più IP. TNIR interagisce con MultiSubnetFailover per fornire le seguenti tre sequenze di connessione:
- 0: Viene eseguito un tentativo con un indirizzo IP, seguito da tutti gli indirizzi IP in parallelo
- 1: Tutti gli indirizzi IP vengono tentati in parallelo.
- 2: Viene eseguito un tentativo con tutti gli indirizzi IP uno dopo l'altro
| TransparentNetworkIPResolution | MultiSubnetFailover | Comportamento |
|---|---|---|
| Vero | Vero | 1 |
| Vero | Falso | 0 |
| Falso | Vero | 1 |
| Falso | Falso | 2 |
TransparentNetworkIPResolution è abilitata per impostazione predefinita. MultiSubnetFailover è disabilitata per impostazione predefinita. Per disabilitare la risoluzione dei IP di rete trasparente (TNIR), è possibile impostare l'opzione di AppContext "Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString" su true all'avvio dell'applicazione:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString", true);
Per altre informazioni sull'impostazione di queste proprietà, vedere la documentazione per la proprietà SqlConnection.ConnectionString.
Abilitazione di un timeout minimo durante l'accesso
Si applica a: .NET Framework; .NET; .NET Standard
Per impedire a un tentativo di accesso di attendere indefinitamente, è possibile impostare l'opzione di AppContext "Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin" su true all'avvio dell'applicazione:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin", false);
Disabilitazione del comportamento di blocco di ReadAsync
Si applica a: .NET Framework; .NET; .NET Standard
A partire dalla versione 3.0, ReadAsync viene eseguito in modo asincrono. Le versioni precedenti eseguono ReadAsync in modo sincrono e bloccano il thread chiamante nel .NET Framework. Per controllare questo comportamento di blocco, è possibile impostare l'opzione di AppContext "Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking" su true o false all'avvio dell'applicazione:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking", false);
Abilitazione del comportamento null di rowversion
Si applica a: .NET Framework; .NET; .NET Standard
A partire dalla versione 3.0, quando un elemento rowversion ha valore null, SqlDataReader restituisce un valore DBNull anziché un oggetto byte[] vuoto. Per abilitare il comportamento predefinito al fine di restituire un byte[] vuoto, abilitare l'opzione AppContext Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior all'avvio dell'applicazione.
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior", true);
Eliminare gli avvisi TLS non sicuri
Si applica a: .NET Framework; .NET; .NET Standard
Disponibile solo a partire dalla versione 4.0.1.
Quando si usa Encrypt=false nella stringa di connessione, viene visualizzato un avviso di sicurezza nella console se la versione TLS è 1.2 o inferiore. Questo avviso può essere eliminato abilitando l'opzione AppContext seguente all'avvio dell'applicazione:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.SuppressInsecureTLSWarning", true);
Ignora il partner di failover fornito dal server
Si applica a: .NET Framework; .NET; .NET Standard
(Disponibile a partire dalle versioni 5.1.8, 6.0.4 e 6.1.3)
In caso di failover, le informazioni sul partner di failover fornite dal server sono preferibili rispetto alle informazioni sul partner di failover fornite nella stringa di connessione. Per ignorare le informazioni del partner di failover fornite dal server e prendere in considerazione solo le informazioni sul partner di failover fornite nella stringa di connessione, abilitare l'opzione AppContext all'avvio dell'applicazione:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner", true);