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.
Microsoft. Le opzioni di connessione Data.SqlClient controllano come il driver stabilisce, identifica, instrada, tenta e aggrega una connessione. Impostali in una stringa di connessione o tramite le proprietà SqlConnectionStringBuilder corrispondenti.
Per l'autenticazione Microsoft Entra ID, vedi Microsoft Entra ID autenticazione. Per le impostazioni TLS, vedi Crittografia e validazione dei certificati.
Impostare le opzioni con SqlConnectionStringBuilder
Usa il builder invece di concatenare frammenti di stringa di connessione:
var builder = new SqlConnectionStringBuilder
{
DataSource = "tcp:sql.example.com,1433",
InitialCatalog = "Orders",
IntegratedSecurity = true,
Encrypt = SqlConnectionEncryptOption.Mandatory,
ApplicationName = "Orders.Worker",
ConnectTimeout = 30,
ConnectRetryCount = 3,
ConnectRetryInterval = 10,
MultiSubnetFailover = true,
};
Il codice utilizza i nomi delle proprietà dei costruttori. Le tabelle utilizzano le grafie comuni delle stringa di connessione. L'autista accetta anche alias documentati.
Opzioni di timeout
| Keyword | Predefinito | Behavior | Versione |
|---|---|---|---|
Connect Timeout |
15 secondi | Limita il tempo necessario per stabilire una connessione. Quando il pool si trova a Max Pool Size, pone anche un limite al tempo di attesa per una connessione nel pool utilizzabile.
Connection Timeout e Timeout sono alias. |
Tutte versioni Microsoft. Data.SqlClient |
Command Timeout |
30 secondi | Imposta il timeout predefinito per i comandi associati alla connessione. Imposta CommandTimeout su un comando quando un'operazione richiede un limite diverso. Un valore di 0 non ha limite di tempo e può lasciare il lavoro in attesa indefinitamente. |
Microsoft. Data.SqlClient 2.1 e versioni successive |
I timeout di connessione e dei comandi misurano operazioni diverse.
Connect Timeout Non limita l'esecuzione delle query.
Command Timeout non limita l'autenticazione né l'attesa di una connessione del pool.
A CancellationToken è separato da entrambe le impostazioni. Passalo a OpenAsync, esecuzione del comando e metodi di lettura così il chiamante può smettere di aspettare prima che scada un timeout.
Identità del carico di lavoro e opzioni di instradamento
| Keyword | Predefinito | Behavior | Versione |
|---|---|---|---|
Application Name |
Nome definito dal fornitore | Identifica il carico di lavoro nelle sessioni di SQL Server, audit e diagnostici. Usa un nome stabile e a bassa cardinalità per ogni carico di lavoro distribuito. | Tutte versioni Microsoft. Data.SqlClient |
Application Intent |
ReadWrite |
ReadOnly richiede il routing per intento di lettura quando la destinazione e il gruppo di disponibilità sono configurati di conseguenza. Non imposta le istruzioni SQL come di sola lettura. |
Tutte versioni Microsoft. Data.SqlClient |
Application Intent=ReadOnly Normalmente si abbina a un ascoltatore di gruppo di disponibilità o a un endpoint di servizio che supporta il routing di lettura. Vedi Alta disponibilità e ripristino di emergenza.
Opzioni di rete e pacchetti
| Keyword | Predefinito | Behavior | Versione |
|---|---|---|---|
Packet Size |
8.000 byte | Imposta la dimensione del pacchetto di rete Tabular Data Stream (TDS). I valori supportati vanno da 512 a 32.768 byte. Mantieni il predefinito a meno che le misurazioni del carico di lavoro e la configurazione del server non giustifichino un cambiamento. | Tutte versioni Microsoft. Data.SqlClient |
MultiSubnetFailover |
false |
Utilizza tentativi di connessione TCP paralleli agli indirizzi IP restituiti da un endpoint con più indirizzi. Impostalo su true per gli endpoint di Azure SQL, i listener dei gruppi di disponibilità e le istanze del cluster di failover raggiunti tramite TCP. |
Tutte versioni Microsoft. Data.SqlClient |
MultiSubnetFailover=true non è supportata con istanze nominate, protocolli non TCP, mirroring di database o endpoint configurati con più di 64 indirizzi IP. È sicuro per un endpoint TCP a singolo IP.
Microsoft.Data.SqlClient 7.0 dispone anche di uno switch AppContext valido per l'intero processo che può fare in modo che ogni connessione si comporti come se MultiSubnetFailover=true. La stringa di connessione predefinita rimane false quando quell'interruttore non è abilitato. Vedi gli interruttori AppContext in SqlClient.
Opzioni di aggregazione
| Keyword | Predefinito | Behavior | Versione |
|---|---|---|---|
Pooling |
true |
Riutilizza le connessioni fisiche per abbinare le configurazioni delle connessioni. Disabilitalo solo per la diagnosi o per un carico di lavoro misurato che non può accumularsi in modo sicuro. | Tutte versioni Microsoft. Data.SqlClient |
Min Pool Size |
0 |
Mantiene almeno questo numero di connessioni fisiche in un pool dopo che il pool è stato creato. Un valore positivo può mantenere aperte le sessioni del database fino alla fine del pool o del processo. | Tutte versioni Microsoft. Data.SqlClient |
Max Pool Size |
100 |
Limita le connessioni fisiche in un unico pool. Le richieste rimangono in attesa fino a Connect Timeout quando il pool è pieno. |
Tutte versioni Microsoft. Data.SqlClient |
Load Balance Timeout |
0 Secondi |
Scarta una connessione quando torna nel pool se la sua età supera questo valore.
Connection Lifetime è un alias.
0 Disabilita la rimozione basata sull'età. |
Tutte versioni Microsoft. Data.SqlClient |
Pool Blocking Period |
Auto |
Controlla se il pool rilancia temporaneamente un errore di login nella cache.
Autodisabilita il periodo di blocco per gli endpoint Azure SQL riconosciuti e lo abilita per altri endpoint. |
Tutte versioni Microsoft. Data.SqlClient |
Enlist |
true |
Richiama automaticamente una connessione aperta nella transazione ambient System.Transactions . |
Tutte versioni Microsoft. Data.SqlClient |
Le impostazioni del pool si applicano a ogni pool distinto, non all'intero processo o server di database. Prima di aumentare Max Pool Size, confermate che le connessioni e i lettori siano stati eliminati tempestivamente e che il database possa accettare il totale risultante in ogni istanza applicativa.
Per chiavi di pool, comportamento dei token, periodi di blocco, cancellazione e diagnostica, vedi SQL Server connection pooling.
Opzioni di recupero della connessione
| Keyword | Predefinito | Behavior | Versione |
|---|---|---|---|
Connect Retry Count |
1 |
Imposta il conteggio dei ritentativi per i fallimenti transitori qualificati durante la connessione iniziale e per il ripristino di una connessione inattiva rotta. Il default effettivo è 2 per endpoint Azure SQL riconosciuti e 5 per endpoint Azure Synapse e on-demand riconosciuti.
0 disabilita questi nuovi tentativi. |
Tutte versioni Microsoft. Data.SqlClient |
Connect Retry Interval |
10 secondi | Imposta il ritardo prima dei successivi tentativi di connessione iniziale o dei tentativi di ripristino da inattività. I valori validi sono da 1 a 60 secondi. | Tutte versioni Microsoft. Data.SqlClient |
Il primo ritentativo durante il recupero della connessione è immediato.
Connect Retry Interval Applica prima dei tentativi successivi. Per bypassare il ritentativo iniziale aperto integrato per un'operazione, si usa un sovraccarico aperto con OpenWithoutRetry.
Queste parole chiave non riprovano un comando che fallisce mentre è in esecuzione. Usa una logica di tentativi ripetuti configurabile per un criterio personalizzato di apertura o di comando. Ripetere i comandi solo quando è sicuro farlo.
Identità server e opzioni di certificato
Queste opzioni risolvono specifici requisiti di denominazione dei certificati o di Kerberos. Non sostituiscono l'autenticazione normale e la validazione dei certificati.
| Keyword | Predefinito | Behavior | Versione |
|---|---|---|---|
Host Name In Certificate |
Nome host del server | Fornisce il Nome Comune (CN) o il Nome Alternativo del Soggetto (SAN) atteso quando la connessione utilizza un alias DNS diverso dal certificato. | Microsoft. Data.SqlClient 5.0 e versioni successive |
Server Certificate |
Vuoto | Fornisce un file PEM, DER o CER che deve corrispondere esattamente al certificato server quando Encrypt=Mandatory o Encrypt=Strict. |
Microsoft. Data.SqlClient 5.1 e versioni successive |
Server SPN |
Derivato dal nome del server | Sovrascrive il Service Principal Name (SPN) utilizzato per l'autenticazione integrata al server principale. Configuralo solo quando la denominazione Kerberos distribuita richiede un SPN esplicito. | Microsoft. Data.SqlClient 5.0 e versioni successive |
Failover Partner SPN |
Ricavato dal partner di failover | Sovrascrive lo SPN per un partner di failover mirroring del database. Il mirroring del database è obsoleto. Usa i gruppi di disponibilità per le nuove distribuzioni. | Microsoft. Data.SqlClient 5.0 e versioni successive |
Host Name In Certificate cambia il nome usato per il matching dei certificati. Non si fida di un emittente non affidabile.
Server Certificate vincola uno specifico file di certificato e richiede un aggiornamento dell'applicazione quando tale certificato viene sostituito.
Sovrascritture SPN errate possono impedire l'autenticazione Kerberos o indebolire il controllo dell'identità previsto. Correggi DNS e registrazione SPN invece di impostare override quando possibile.
Mantieni le stringhe di connessione piccole. Aggiungi un'opzione solo quando puoi indicare quale comportamento cambia e come il carico di lavoro verifica quel comportamento.
Cambiamenti nelle opzioni di revisione
Prima di cambiare un'opzione in produzione:
- Registra la stringa di connessione corrente, la versione del driver, il tipo di endpoint e il problema osservato.
- Cambia un comportamento alla volta.
- Test dello stabilimento della connessione, dell'autenticazione, della convalida dei certificati, del pooling, del failover, dell'annullamento e dell'esecuzione delle query.
- Misura connessioni fisiche, attese nel pool, latenza di connessione e numero di errori.
- Conferma l'impostazione su ogni istanza distribuita.
Le stringhe di connessione fanno parte della chiave del pool. Un rollout a fasi può creare temporaneamente sia pool vecchi che nuovi, aumentando così il numero totale di connessioni fisiche al database.