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.
Questo articolo elenca tutte le parole chiave stringa di connessione che Microsoft. Data.SqlClient accetta. Ogni parola chiave ha anche una proprietà corrispondente SqlConnectionStringBuilder . Per un'introduzione, i pattern comuni e le regole di parsing, vedi Stringhe di connessione.
Le parole chiave e gli alias non sono sensibili alla maiuscolagem. Quando imposti un valore tramite una proprietà costruttore, il costruttore scrive la parola chiave canonica nella colonna Parola Chiave .
Impostare le opzioni con SqlConnectionStringBuilder
Parti da una stringa di connessione base che contiene server, database e impostazioni di autenticazione. Poi imposta opzioni specifiche per carico di lavoro tramite le proprietà del costruttore. Le schede del framework .NET utilizzano C# 7.3. Per creare un progetto che esegue i campioni, vedi Crea il progetto.
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}");
L'output è il seguente:
APP_NAME(): Orders.Worker
Connection timeout: 30
Command timeout: 60
Un nuovo SqlCommand prende il suo timeout predefinito dalla Command Timeout parola chiave della sua connessione.
Controlla i valori predefiniti
Un nuovo SqlConnectionStringBuilder riporta il valore predefinito per ogni opzione. Questo programma stampa i valori predefiniti che la maggior parte delle applicazioni esamina:
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}");
Su .NET, l'output è:
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 è l'opzione Mandatory . Su .NET Framework, il nome predefinito dell'applicazione è Framework Microsoft SqlClient provider di dati.
Opzioni server e database
| Keyword | Aliases | Proprietà costruttiva | Predefinito | Descrizione |
|---|---|---|---|---|
Data Source |
Server, Address, AddrNetwork Address |
DataSource |
Vuoto | Il server a cui connettersi. Accetta un nome host, host,port, host\instance, (localdb)\instance, e un tcp: prefisso di protocollo or np: . Per i moduli accettati, vedi Specifica server e database. |
Initial Catalog |
Database |
InitialCatalog |
Vuoto | Il database da usare dopo l'accesso. Quando è vuoto, il server utilizza il database predefinito dell'accesso. |
AttachDbFilename |
Extended Properties, Initial File Name |
AttachDBFilename |
Vuoto | Il percorso completo di un file di database primario da collegare, per SQL Server Express e LocalDB. |
User Instance |
None | UserInstance |
false |
Reindirizza la connessione a un'istanza utente di SQL Server Express. Per ulteriori informazioni, vedi SQL Server Express istanze utente. |
Failover Partner |
FailoverPartner |
FailoverPartner |
Vuoto | Il partner di mirroring del database può provare quando il server principale non è disponibile. Il mirroring del database è obsoleto. Usa i gruppi di disponibilità per le nuove distribuzioni. |
Current Language |
Language |
CurrentLanguage |
Vuoto | Il nome del linguaggio SQL Server per la sessione, come us_english. Controlla i formati delle date e il linguaggio dei messaggi di sistema. |
Opzioni di identità applicativa
| Keyword | Aliases | Proprietà costruttiva | Predefinito | Descrizione |
|---|---|---|---|---|
Application Name |
App |
ApplicationName |
Core Microsoft SqlClient Data Provider |
Il nome che il server segnala attraverso APP_NAME() e nelle viste della sessione. Usa un nome stabile per ogni carico di lavoro distribuito. Valori distinti creano pool di connessione distinti. |
Workstation ID |
WorkstationID, WSID |
WorkstationID |
Nome computer locale | Il nome del computer client che il server segnala tramite HOST_NAME(). |
Application Intent |
ApplicationIntent |
ApplicationIntent |
ReadWrite |
ReadOnly richiede l'instradamento dell'intesa di lettura quando il target lo supporta. Non rende le dichiarazioni in sola lettura. Per ulteriori informazioni, vedi Alta disponibilità e disaster recovery. |
Per segnalare quale framework o strumento ha aperto una connessione, usa la RegisteredApplication proprietà. Non ha una parola chiave di stringa di connessione. Per ulteriori informazioni, vedi Segnala l'identità dell'applicazione.
Opzioni di autenticazione
| Keyword | Aliases | Proprietà costruttiva | Predefinito | Descrizione |
|---|---|---|---|---|
Authentication |
None | Authentication |
Non specificato | Metodo di autenticazione. Per i valori accettati, vedi la tabella seguente. |
Integrated Security |
Trusted_Connection |
IntegratedSecurity |
false |
true, yes, oppure sspi usa l'identità del processo corrente. |
User ID |
UID, User |
UserID |
Vuoto | Il nome di accesso SQL, o l'identificatore utente o client di Microsoft Entra ID, a seconda di Authentication. |
Password |
PWD |
Password |
Vuoto | La password o il segreto del client per i metodi che ne accettano uno. |
Persist Security Info |
PersistSecurityInfo |
PersistSecurityInfo |
false |
Quando false, il driver rimuove la password dopo SqlConnection.ConnectionString l'apertura della connessione. Lascia perdere false. |
Server SPN |
ServerSPN |
ServerSPN |
Derivato dal nome del server | Sovrascrive il Service Principal Name (SPN) utilizzato per l'autenticazione integrata al server principale. |
Failover Partner SPN |
FailoverPartnerSPN |
FailoverPartnerSPN |
Derivato dal nome partner | Sovrascrive lo SPN utilizzato per l'autenticazione integrata al partner di failover. |
Authentication accetta questi valori. Il costruttore le scrive senza spazi, come ActiveDirectoryDefault, e l'analizzatore accetta entrambe le forme.
| Value | Identità |
|---|---|
Sql Password |
Un login SQL con User ID e Password. |
Active Directory Default |
Una catena di fonti di credenziali, come variabili ambientali, identità gestita e login degli strumenti per sviluppatori. |
Active Directory Managed Identity |
Un'identità gestita. Impostato User ID all'ID client di un'identità assegnata dall'utente.
Active Directory MSI è un alias. |
Active Directory Workload Identity |
Un'identità di carico di lavoro Kubernetes. |
Active Directory Service Principal |
Un'applicazione imposta User ID sull'ID client e Password impostata sul client secret. |
Active Directory Interactive |
Un utente che accede tramite un prompt del browser. |
Active Directory Device Code Flow |
Un utente che accede su un altro dispositivo con un codice. |
Active Directory Integrated |
L'utente Windows connesso, tramite una configurazione federata o senza soluzione di continuità con accesso singolo. |
Active Directory Password |
Nome utente e password. Questo metodo è obsoleto. Usa un altro metodo. |
I metodi Microsoft Entra ID necessitano del Microsoft.Data.SqlClient.Extensions.Azure pacchetto. Per configurazione ed esempi, vedi Microsoft Entra ID autenticazione e SQL Server autenticazione.
Opzioni di crittografia
| Keyword | Aliases | Proprietà costruttiva | Predefinito | Descrizione |
|---|---|---|---|---|
Encrypt |
None | Encrypt |
Mandatory |
Strict utilizza TDS 8.0 e valida sempre il certificato server.
Mandatory, true, oppure yes cripta la connessione.
Optional, false, o no cripta l'intera connessione solo quando il server ne ha bisogno. Quando il server supporta la crittografia ma non la richiede, viene criptato solo il pacchetto di login. |
Trust Server Certificate |
TrustServerCertificate |
TrustServerCertificate |
false |
true Salta la validazione dei certificati del server. Viene ignorato quando Encrypt=Strict. Non usarlo nell'ambiente di produzione. |
Host Name In Certificate |
HostNameInCertificate |
HostNameInCertificate |
Vuoto | Un nome di riserva per la validazione dei certificati. SqlClient valida innanzitutto il certificato contro il nome del server in Data Source. Controlla Host Name In Certificate solo quando quel nome non corrisponde, quindi un valore sbagliato non causa un fallimento quando il nome del server corrisponde già. Non è fissato un certificato. Per richiedere un certificato specifico, usa Server Certificate. Non cambia la destinazione di rete né bypassa i controlli della catena di fiducia e delle scadenze. Lascialo non impostato quando il nome del server corrisponde già al certificato. |
Server Certificate |
ServerCertificate |
ServerCertificate |
Vuoto | Il percorso di un file PEM, DER o CER che deve corrispondere esattamente al certificato server. Il driver controlla la corrispondenza solo quando il certificato è validato, quindi usalo con Encrypt=Mandatory o Encrypt=Strict e Trust Server Certificate=false. Un file corrispondente sostituisce la validazione della catena e del nome host, quindi funziona con un certificato autofirmato di cui il client non si fida. |
Per le regole complete di validazione, vedi Crittografia e validazione dei certificati.
Opzioni sempre criptate
| Keyword | Aliases | Proprietà costruttiva | Predefinito | Descrizione |
|---|---|---|---|---|
Column Encryption Setting |
ColumnEncryption |
ColumnEncryptionSetting |
Disabled |
Enabled attiva Sempre Criptato per la connessione. |
Attestation Protocol |
None | AttestationProtocol |
Non specificato | Il protocollo di attestazione dell'enclave: AAS, HGS, o None. |
Enclave Attestation Url |
None | EnclaveAttestationUrl |
Vuoto | L'endpoint del servizio di attestazione per Always Encrypted con enclave sicure. |
Opzioni di rete
| Keyword | Aliases | Proprietà costruttiva | Predefinito | Descrizione |
|---|---|---|---|---|
Multi Subnet Failover |
MultiSubnetFailover |
MultiSubnetFailover |
false |
Prova tutti gli indirizzi IP a cui il nome del server risolve in parallelo. Usalo per ascoltatori di gruppi di disponibilità e istanze di cluster di failover raggiunte tramite TCP. Non supportato con il mirroring del database. Le istanze nominate dipendono dall'implementazione di rete. L'implementazione gestita, che .NET utilizza su Linux e macOS e su Windows quando la rete gestita è attiva, supporta un'istanza nominata e invia la richiesta del SQL Server Browser a ogni indirizzo risolto in parallelo. L'implementazione nativa su Windows può rifiutare un'istanza nominata con l'errore SNI 48. |
IP Address Preference |
IPAddressPreference |
IPAddressPreference |
IPv4First |
L'ordine per provare risolti risponde: IPv4First, IPv6First, o UsePlatformDefault. |
Packet Size |
PacketSize |
PacketSize |
8000 |
La dimensione del pacchetto Tabular Data Stream (TDS) in byte, da 512 a 32.768. |
Un interruttore AppContext a livello di processo può cambiare il Multi Subnet Failover valore predefinito in true. Per ulteriori informazioni, consulta gli interruttori AppContext in SqlClient.
Opzioni di timeout
| Keyword | Aliases | Proprietà costruttiva | Predefinito | Descrizione |
|---|---|---|---|---|
Connect Timeout |
Connection Timeout, ConnectTimeout, Timeout |
ConnectTimeout |
15 |
Secondi per aspettare una connessione, inclusa l'attesa di una connessione in pool quando la piscina è piena.
0 aspetta indefinitamente. |
Command Timeout |
None | CommandTimeout |
30 |
Il predefinito CommandTimeout in pochi secondi per i comandi creati sulla connessione.
0 aspetta indefinitamente. |
Connect Timeout Non limita l'esecuzione delle query.
Command Timeout Non limita il login né l'attesa per una connessione in pool. Passa a CancellationToken chiamate asincrone così il chiamante può smettere di aspettare prima che scada uno dei timeout.
Opzioni di recupero della connessione
| Keyword | Aliases | Proprietà costruttiva | Predefinito | Descrizione |
|---|---|---|---|---|
Connect Retry Count |
ConnectRetryCount |
ConnectRetryCount |
1 |
Ritenta dopo un guasto transitorio qualificante durante la prima apertura e durante il ripristino di una connessione a riposo rotta.
0 Disattiva i ritentativi. I valori validi sono compresi tra 0 e 255. |
Connect Retry Interval |
ConnectRetryInterval |
ConnectRetryInterval |
10 |
Secondi tra un tentativo di ritento. I valori validi sono da 1 a 60. |
Quando Connect Retry Count è 1, che è il valore predefinito, il driver lo utilizza 2 per gli endpoint Azure SQL e 5 per gli endpoint serverless SQL pool di Azure Synapse Analytics quando ripristina una connessione idle rotta. La prima apertura usa il valore impostato, quindi il predefinito consente un solo retry su ogni endpoint. Il driver utilizza qualsiasi altro valore impostato in entrambi i casi.
Queste parole chiave non riprovano un comando che fallisce mentre è in esecuzione. Per saltare il retry integrato per un aperto, chiami un Open sovraccarico con OpenWithoutRetry. Per le policy personalizzate, vedi Logica di ritenti configurabile. Riprova un comando solo quando ripeterlo è sicuro.
Opzioni di aggregazione
| Keyword | Aliases | Proprietà costruttiva | Predefinito | Descrizione |
|---|---|---|---|---|
Pooling |
None | Pooling |
true |
Riutilizza le connessioni fisiche per abbinare le stringhe di connessione. |
Min Pool Size |
None | MinPoolSize |
0 |
Connessioni fisiche che la piscina mantiene aperte dopo la sua creazione. |
Max Pool Size |
None | MaxPoolSize |
100 |
Le connessioni più fisiche in un unico pool. Deve essere almeno 1. |
Connection Idle Timeout |
None | IdleTimeout |
300 |
Secondi in cui una connessione può rimanere inattiva nella piscina prima che la piscina la chiuda.
0 Disattiva la scadenza al minimo. Applicato solo quando l'interruttore Switch.Microsoft.Data.SqlClient.UseLegacyIdleTimeoutBehavior AppContext è false. L'impostazione predefinita è true. |
Load Balance Timeout |
Connection Lifetime |
LoadBalanceTimeout |
0 |
L'età massima in secondi di una connessione tornava nella piscina. Una connessione più vecchia è chiusa.
0 Spegne il limite. |
Pool Blocking Period |
PoolBlockingPeriod |
PoolBlockingPeriod |
Auto |
Che il pool rilanci un errore di login in cache per un breve periodo: Auto, AlwaysBlock, oppure NeverBlock.
Autodisattiva il blocco per gli endpoint Azure SQL. |
Ogni distinta stringa di connessione ha il proprio pool. Per chiavi del pool, cancellamento e tempo di inattività, vedi SQL Server connection pooling.
Opzioni di transazione e sessione
| Keyword | Aliases | Proprietà costruttiva | Predefinito | Descrizione |
|---|---|---|---|---|
Enlist |
None | Enlist |
true |
Registra la connessione nella transazione ambient System.Transactions quando si apre. |
Transaction Binding |
None | TransactionBinding |
Implicit Unbind |
Implicit Unbind Distacca la connessione quando la transazione arruolata termina.
Explicit Unbind Lo tiene collegato finché la connessione non si chiude o il codice non lo stacca. |
Multiple Active Result Sets |
MultipleActiveResultSets |
MultipleActiveResultSets |
false |
Permette più di un batch attivo su una connessione. |
Type System Version |
None | TypeSystemVersion |
Latest |
Il tipo di server che il driver espone. Accetta Latest, SQL Server 2012, SQL Server 2008, e SQL Server 2005. Lascialo a Latest. |
Replication |
None | Replication |
false |
Identifica la connessione come una connessione di replicazione. |
Opzioni solo per framework .NET
Queste parole chiave sono accettate solo su .NET Framework. Su .NET, il costruttore lancia NotSupportedException e SqlConnection lancia ArgumentException.
| Keyword | Aliases | Proprietà costruttiva | Predefinito | Descrizione |
|---|---|---|---|---|
Network Library |
Net, Network |
NetworkLibrary |
Vuoto | La libreria di rete. Non combinarlo con il prefisso o tcp:np: in Data Source, perché la connessione fallisce. Su .NET, prefisso Data Source con tcp: o np: invece. |
Connection Reset |
None | ConnectionReset |
true |
Obsolete. |
Transparent Network IP Resolution |
TransparentNetworkIPResolution |
TransparentNetworkIPResolution |
true |
Obsolete. |
Parole chiave non supportate
| Keyword | Result |
|---|---|
Context Connection |
Context Connection=true
InvalidOperationExceptiongenera . Microsoft. Data.SqlClient non supporta connessioni contestuali SQL CLR. |
Asynchronous Processing |
Genera l'eccezione ArgumentException: Keyword not supported. I metodi asincroni funzionano senza di esso. |
Driver, Provider |
Genera l'eccezione ArgumentException: Keyword not supported. Queste parole chiave appartengono a ODBC e OLE DB. |
Regole di convalida
SqlConnectionStringBuilder Rifiuta parole chiave sconosciute e molti valori non validi quando li imposti.
SqlConnectionEffettua più controlli quando imposti la sua stringa di connessione, inclusi valori singoli accettati dal builder e combinazioni di parole chiave. Una stringa accettata dal costruttore può comunque guastarsi quando crei la connessione.
Il costruttore e la connessione rifiutano questi valori con ArgumentException:
-
Connect Timeout,Command Timeout,Load Balance Timeout,Connection Idle Timeout, oMin Pool Sizemeno di 0. -
Max Pool Sizemeno di 1. -
Packet Sizeal di fuori da 512 a 32.768. -
Connect Retry Countfuori da 0 a 255. -
Connect Retry Intervalfuori da 1 a 60. - Una parola chiave che non è presente in questo articolo.
SqlConnection Rifiuta anche questi valori con ArgumentException, anche se il costruttore li accetta:
-
Type System VersionDiverso daLatest,SQL Server 2012,SQL Server 2008, oSQL Server 2005. -
Transaction Bindinga parteImplicit UnbindoExplicit Unbind. - Un valore più lungo del limite TDS per
Application Name,Current Language,Data Source,Failover Partner,Initial Catalog,PasswordUser ID,Workstation ID, , oAttachDBFilename.
SqlConnection rifiuta anche queste combinazioni con ArgumentException:
-
Min Pool Sizemaggiore diMax Pool Size. -
Failover PartnersenzaInitial Catalog. -
Failover PartnerconMulti Subnet Failover=true,User Instance=true, oppureApplication Intent=ReadOnly. -
AuthenticationconIntegrated Security=true. -
Passwordcon , , , , ,Active Directory Default, oActive Directory Workload Identity.Active Directory MSIActive Directory Managed IdentityActive Directory InteractiveActive Directory Integrated -
User IDoppurePasswordconActive Directory Device Code Flow.
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 che stai risolvendo.
- Cambia un'opzione 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 la latenza di connessione, le attese del pool e i numeri di errore.
- Conferma l'impostazione su ogni istanza distribuita.
Una stringa di connessione modificata crea un nuovo pool. Durante un rollout a tappe, pool vecchi e nuovi esistono contemporaneamente, quindi il numero totale di connessioni fisiche al server può aumentare.