Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek uvádí všechna klíčová slova připojovací řetězec, která Microsoft. Data.SqlClient přijímá. Každé klíčové slovo má také shodnou vlastnost SqlConnectionStringBuilder . Pro úvod, běžné vzory a pravidla parsování viz Spojovací řetězce.
Klíčová slova a aliasy nejsou rozlišující velká písmena. Když nastavíte hodnotu přes developerskou nemovitost, stavitel napíše kanonické klíčové slovo do sloupce Klíčové slovo .
Nastavte možnosti pomocí SqlConnectionStringBuilder
Začněte se základním připojovací řetězec, který obsahuje nastavení serveru, databáze a autentizace. Pak nastavte možnosti specifické pro zátěž přes builder properties. Záložky .NET Framework používají C# 7.3. Pro vytvoření projektu, který skládá vzorky, viz Vytvořit projekt.
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}");
Výstup je:
APP_NAME(): Orders.Worker
Connection timeout: 30
Command timeout: 60
Nová SqlCommand si bere výchozí časový limit od Command Timeout klíčového slova svého spojení.
Zkontrolujte výchozí hodnoty
Nový SqlConnectionStringBuilder hlásí výchozí hodnotu pro každou možnost. Tento program tiskne výchozí hodnoty, které většina aplikací kontroluje:
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}");
Na .NET je výstup:
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 je Mandatory možnost. Ve .NET Frameworku je výchozí název Framework Microsoft SqlClient Zprostředkovatel dataplikace .
Možnosti serveru a databáze
| Keyword | Aliases | Nemovitost pro stavitele | Výchozí | Popis |
|---|---|---|---|---|
Data Source |
Server, Address, , AddrNetwork Address |
DataSource |
Empty | Na server, ke kterému se připojit. Přijímá hostitelské jméno, host,port, host\instance, (localdb)\instance, a tcp: protokolovou předponu OR np: . Pro přijaté formuláře viz Specifikujte server a databázi. |
Initial Catalog |
Database |
InitialCatalog |
Empty | Databáze pro použití po přihlášení. Když je prázdný, server použije výchozí databázi přihlašovacího údaje. |
AttachDbFilename |
Extended Properties, Initial File Name |
AttachDBFilename |
Empty | Celá cesta primárního databázového souboru k připojení pro SQL Server Express a LocalDB. |
User Instance |
None | UserInstance |
false |
Přesměruje spojení na uživatelskou instanci SQL Server Express. Pro více informací viz uživatelské instance SQL Server Express. |
Failover Partner |
FailoverPartner |
FailoverPartner |
Empty | Partner pro zrcadlení databáze to zkouší, když není primární server dostupný. Zrcadlení databází je zastaralá funkce. Používejte skupiny dostupnosti pro nové nasazení. |
Current Language |
Language |
CurrentLanguage |
Empty | Název jazyka SQL Server pro relaci, například us_english. Řídí formáty dat a jazyk systémových zpráv. |
Možnosti identity aplikace
| Keyword | Aliases | Nemovitost pro stavitele | Výchozí | Popis |
|---|---|---|---|---|
Application Name |
App |
ApplicationName |
Core Microsoft SqlClient Data Provider |
Jméno, které server hlásí skrze APP_NAME() a v session views. Pro každou nasazenou pracovní zátěž použijte jedno stabilní jméno. Různé hodnoty vytvářejí odlišné skupiny spojů. |
Workstation ID |
WorkstationID, WSID |
WorkstationID |
Název místního počítače | Klientský počítač je název, který server hlásí přes HOST_NAME(). |
Application Intent |
ApplicationIntent |
ApplicationIntent |
ReadWrite |
ReadOnly požaduje směrování s úmyslem čtení při podpoře cíle. Nezobrazuje výroky pouze pro čtení. Pro více informací viz Vysoká dostupnost a obnova po havárii. |
Pro nahlášení, který framework nebo nástroj otevřel spojení, použijte tuto vlastnost RegisteredApplication . Nemá žádné klíčové slovo pro připojovací řetězec. Pro více informací viz Nahlásit identitu aplikace.
Možnosti ověřování
| Keyword | Aliases | Nemovitost pro stavitele | Výchozí | Popis |
|---|---|---|---|---|
Authentication |
None | Authentication |
Neurčeno | Metoda ověřování. Pro přijímané hodnoty viz následující tabulka. |
Integrated Security |
Trusted_Connection |
IntegratedSecurity |
false |
true, yes, nebo sspi používá identitu aktuálního procesu. |
User ID |
UID, User |
UserID |
Empty | SQL přihlašovací jméno nebo identifikátor uživatele či klienta Microsoft Entra ID, v závislosti na Authentication. |
Password |
PWD |
Password |
Empty | Heslo nebo klientské tajemství pro metody, které ho přijímají. |
Persist Security Info |
PersistSecurityInfo |
PersistSecurityInfo |
false |
Když false, ovladač odstraní heslo po SqlConnection.ConnectionString otevření připojení. Nech to falsebýt. |
Server SPN |
ServerSPN |
ServerSPN |
Odvozeno z názvu serveru | Přepíše název instančního objektu služby (SPN) používaný pro integrované ověřování vůči primárnímu serveru. |
Failover Partner SPN |
FailoverPartnerSPN |
FailoverPartnerSPN |
Odvozeno od partnerského jména | Přepisuje SPN používané pro integrovanou autentizaci vůči failover partnerovi. |
Authentication tyto hodnoty přijímá. Stavitel je zapisuje bez mezer, například ActiveDirectoryDefault, a parser přijímá obě formy.
| Value | Identity |
|---|---|
Sql Password |
SQL přihlášení s User ID a Password. |
Active Directory Default |
Řetězec zdrojů přihlašovacích údajů, jako jsou proměnné prostředí, spravovaná identita a přihlášení vývojářských nástrojů. |
Active Directory Managed Identity |
Spravovaná identita. Nastavte User ID na ID klienta uživatelem přiřazené identity.
služba Active Directory MSI je alias. |
Active Directory Workload Identity |
Identita workloadu v Kubernetes. |
Active Directory Service Principal |
Aplikace s User ID nastaveným na ID klienta a Password nastaveným na klientské tajemství. |
Active Directory Interactive |
Uživatel, který se přihlásí přes výzvu prohlížeče. |
Active Directory Device Code Flow |
Uživatel, který se přihlásí na jiném zařízení pomocí kódu. |
Active Directory Integrated |
Přihlášený uživatel Windows prostřednictvím federované nebo bezproblémové konfigurace jednorázového přihlášení. |
Active Directory Password |
Uživatelské jméno a heslo. Tato metoda je zastaralá. Použijte jinou metodu. |
Microsoft Entra ID metody potřebují Microsoft.Data.SqlClient.Extensions.Azure tento balíček. Pro nastavení a příklady viz Microsoft Entra ID autentizace a SQL Server autentizace.
Možnosti šifrování
| Keyword | Aliases | Nemovitost pro stavitele | Výchozí | Popis |
|---|---|---|---|---|
Encrypt |
None | Encrypt |
Mandatory |
Strict používá TDS 8.0 a vždy ověřuje serverový certifikát.
Mandatory, true, nebo yes šifruje spojení.
Optional, false, nebo no šifruje celé spojení pouze tehdy, když to server vyžaduje. Když server šifrování podporuje, ale nevyžaduje ho, zašifruje se pouze přihlašovací paket. |
Trust Server Certificate |
TrustServerCertificate |
TrustServerCertificate |
false |
true přeskočí validaci serverového certifikátu. Ignoruje se, pokud Encrypt=Strict. Nepoužívejte ho v produkčním prostředí. |
Host Name In Certificate |
HostNameInCertificate |
HostNameInCertificate |
Empty | Záložní název pro ověřování certifikátů. SqlClient nejprve ověří certifikát vůči názvu serveru v Data Source. Kontroluje Host Name In Certificate to jen tehdy, když se jméno neshoduje, takže špatná hodnota nezpůsobí selhání, když už název serveru sedí. Certifikát se nepřipíná. Pro požadavek konkrétního certifikátu použijte Server Certificate. Nemění cílovou stanici sítě ani neobchází kontroly řetězce důvěry a expirace. Nechte to nenastavené, když už název serveru odpovídá certifikátu. |
Server Certificate |
ServerCertificate |
ServerCertificate |
Empty | Cesta souboru PEM, DER nebo CER, která musí přesně odpovídat certifikátu serveru. Řidič kontroluje shodu pouze při ověřování certifikátu, takže ji použije s Encrypt=Mandatory nebo Encrypt=Strict a Trust Server Certificate=false. Shodný soubor nahrazuje ověřování řetězce a hostitelského jména, takže funguje s vlastním podepsaným certifikátem, kterému klient nedůvěřuje. |
Pro úplná validační pravidla viz Šifrování a ověřování certifikátů.
Možnosti s vždy šifrovaním
| Keyword | Aliases | Nemovitost pro stavitele | Výchozí | Popis |
|---|---|---|---|---|
Column Encryption Setting |
ColumnEncryption |
ColumnEncryptionSetting |
Disabled |
Enabled zapne Always Encrypted pro připojení. |
Attestation Protocol |
None | AttestationProtocol |
Neurčeno | Protokol pro ověřování enklávy: AAS, HGS, nebo None. |
Enclave Attestation Url |
None | EnclaveAttestationUrl |
Empty | Endpoint pro potvrzovací službu pro Always Encrypted s bezpečnými enklávami. |
Možnosti sítě
| Keyword | Aliases | Nemovitost pro stavitele | Výchozí | Popis |
|---|---|---|---|---|
Multi Subnet Failover |
MultiSubnetFailover |
MultiSubnetFailover |
false |
Zkouší všechny IP adresy, na které se server paralelně vyřeší. Použijte ho pro skupinové posluchače dostupnosti a instance failover clusterů dosažené přes TCP. Není podporováno zrcadlením databází. Pojmenované instance závisí na implementaci sítě. Spravovaná implementace, kterou .NET používá na Linuxu a macOS a na Windows, když je zapnutá spravovaná síť, podporuje pojmenovanou instanci a posílá požadavek SQL Server Browseru na každou vyřešenou adresu paralelně. Nativní implementace ve Windows může odmítnout pojmenovanou instanci s chybou SNI 48. |
IP Address Preference |
IPAddressPreference |
IPAddressPreference |
IPv4First |
Pořadí pro pokus o vyřešené adresy: IPv4First, IPv6First, nebo UsePlatformDefault. |
Packet Size |
PacketSize |
PacketSize |
8000 |
Velikost paketu Tabular Data Stream (TDS) v bajtech od 512 do 32 768. |
Přepínač AppContext v celém procesu může změnit Multi Subnet Failover výchozí na .true Pro více informací viz AppContext switchi v SqlClient.
Možnosti timeoutu
| Keyword | Aliases | Nemovitost pro stavitele | Výchozí | Popis |
|---|---|---|---|---|
Connect Timeout |
Connection Timeout, ConnectTimeout, Timeout |
ConnectTimeout |
15 |
Několik sekund čekání na připojení, včetně čekání na spojení, kdy je pool plný.
0 čeká donekonečna. |
Command Timeout |
None | CommandTimeout |
30 |
Výchozí CommandTimeout nastavení je v sekundách pro příkazy vytvořené na připojení.
0 čeká donekonečna. |
Connect Timeout Neomezuje to provádění dotazů.
Command Timeout Neomezuje přihlášení ani čekání na společné připojení. Předejte a CancellationToken na asynchronní hovory, aby volající mohl přestat čekat dříve, než vyprší časový limit.
Možnosti obnovy spojení
| Keyword | Aliases | Nemovitost pro stavitele | Výchozí | Popis |
|---|---|---|---|---|
Connect Retry Count |
ConnectRetryCount |
ConnectRetryCount |
1 |
Znovu se pokusí po kvalifikačním přechodném selhání při prvním otevření a při obnově přerušeného nečinného spojení.
0 Vypíná opakované pokusy. Platné hodnoty jsou 0 až 255. |
Connect Retry Interval |
ConnectRetryInterval |
ConnectRetryInterval |
10 |
Sekundy mezi pokusy o opakování. Platné hodnoty jsou od 1 do 60. |
Když Connect Retry Count je 1, což je výchozí nastavení, ovladač používá 2 pro Azure SQL endpointy a 5 pro serverless SQL pool endpointy Azure Synapse Analytics, když obnovuje přerušené nefunkční připojení. První otevření používá hodnotu nastavenou, takže výchozí umožňuje jedno opakování na každém koncovém bodě. Ovladač používá jakoukoli jinou hodnotu nastavenou v obou případech.
Tato klíčová slova nezkoušejí znovu příkaz, který selže, zatímco běží. Pro přeskočení vestavěného pokusu pro jedno otevření voláme Open přetížení s OpenWithoutRetry. Pro vlastní politiky viz Konfigurovatelná logika opakovaných pokusů. Zopakujte příkaz jen tehdy, když je opakování bezpečné.
Možnosti sdružování
| Keyword | Aliases | Nemovitost pro stavitele | Výchozí | Popis |
|---|---|---|---|---|
Pooling |
None | Pooling |
true |
Znovu používá fyzická spojení pro porovnávání spojovacích řetězců. |
Min Pool Size |
None | MinPoolSize |
0 |
Fyzická spojení, která bazén udržuje otevřený i po svém vytvoření. |
Max Pool Size |
None | MaxPoolSize |
100 |
Nejvíce fyzických spojení v jednom bazénu. Musí být alespoň 1. |
Connection Idle Timeout |
None | IdleTimeout |
300 |
Sekundy, kdy může spojení zůstat nečinné v bazénu, než ho pool uzavře.
0 Vypne vypršení volnoběhu. Vynucováno pouze tehdy, když je přepínač Switch.Microsoft.Data.SqlClient.UseLegacyIdleTimeoutBehavior AppContext .false Ve výchozím nastavení je to true. |
Load Balance Timeout |
Connection Lifetime |
LoadBalanceTimeout |
0 |
Maximální stáří připojení v sekundách se vrátilo do poolu. Starší spojení je uzavřené.
0 Vypíná limit. |
Pool Blocking Period |
PoolBlockingPeriod |
PoolBlockingPeriod |
Auto |
Zda pool na krátkou dobu Autoznovu vyhodí neúspěšné přihlášení v cache: , AlwaysBlock, nebo NeverBlock.
Autoturns blocking off for Azure SQL endpoints. |
Každý odlišný připojovací řetězec má svůj vlastní pool. Pro klíče poolu, vymazávání a čas nečinnosti viz SQL Server connection pooling.
Transakční a relační možnosti
| Keyword | Aliases | Nemovitost pro stavitele | Výchozí | Popis |
|---|---|---|---|---|
Enlist |
None | Enlist |
true |
Při otevření se připojí k připojení do ambientní System.Transactions transakce. |
Transaction Binding |
None | TransactionBinding |
Implicit Unbind |
Implicit Unbind odpojí spojení po ukončení transakce s zařazenými vojáky.
Explicit Unbind Drží ho připojeného, dokud se spojení nezavře nebo ho kód neodpojí. |
Multiple Active Result Sets |
MultipleActiveResultSets |
MultipleActiveResultSets |
false |
Umožňuje více než jednu aktivní dávku na jednom připojení. |
Type System Version |
None | TypeSystemVersion |
Latest |
Systém typu serveru, který ovladač zpřístupňuje. Přijímá Latest, SQL Server 2012, SQL Server 2008, a SQL Server 2005. Nechte to na Latest. |
Replication |
None | Replication |
false |
Identifikuje spojení jako replikační spojení. |
Pouze možnosti pro .NET Framework
Tato klíčová slova jsou přijímána pouze ve .NET Frameworku. Na .NET stavitel hází NotSupportedException a SqlConnection hází ArgumentException.
| Keyword | Aliases | Nemovitost pro stavitele | Výchozí | Popis |
|---|---|---|---|---|
Network Library |
Net, Network |
NetworkLibrary |
Empty | Síťová knihovna. Nekombinujte ho s prefixem nebo tcp:np: v , Data Sourceprotože spojení selže. Na .NET předponu Data Source použijte s tcp: nebo np: místo toho. |
Connection Reset |
None | ConnectionReset |
true |
Obsolete. |
Transparent Network IP Resolution |
TransparentNetworkIPResolution |
TransparentNetworkIPResolution |
true |
Obsolete. |
Nepodporovaná klíčová slova
| Keyword | Result |
|---|---|
Context Connection |
Context Connection=true vyhodí InvalidOperationException. Microsoft. Data.SqlClient nepodporuje kontextová spojení s SQL CLR. |
Asynchronous Processing |
Vyhodí ArgumentException: Keyword not supported. Asynchronní metody fungují i bez něj. |
Driver, Provider |
Vyhodí ArgumentException: Keyword not supported. Tato klíčová slova patří do ODBC a OLE DB. |
Pravidla ověřování
SqlConnectionStringBuilder Odmítá neznámá klíčová slova a mnoho neplatných hodnot, když je nastavíte.
SqlConnectionprovádí více kontrol, když nastavíte svůj připojovací řetězec, včetně jednotlivých hodnot, které builder přijímá, a kombinací klíčových slov. Řetězec, který builder přijme, může při vytvoření spojení selhat.
Stavitel a spojení tyto hodnoty odmítají s ArgumentException:
-
Connect Timeout,Command Timeout, , ,Connection Idle Timeout, neboMin Pool SizeLoad Balance Timeoutméně než 0. -
Max Pool Sizeméně než 1. -
Packet Sizevenku od 512 do 32 768. -
Connect Retry Countvenku od 0 do 255. -
Connect Retry Intervalvenku od 1 do 60. - Klíčové slovo, které v tomto článku není.
SqlConnection také odmítá tyto hodnoty s ArgumentException, i když je stavitel přijímá:
-
Type System VersionkroměLatest,SQL Server 2012,SQL Server 2008, neboSQL Server 2005. -
Transaction BindingkroměImplicit Unbindnebo .Explicit Unbind - Hodnota delší než limit TDS pro
Application Name,Current Language,Data Source,Failover Partner,Initial Catalog,Password,User ID,Workstation IDnebo .AttachDBFilename
SqlConnection také odmítá tyto kombinace s ArgumentException:
-
Min Pool Sizevětší nežMax Pool Size. -
Failover PartnerbezInitial Catalog. -
Failover PartnersMulti Subnet Failover=true,User Instance=true, neboApplication Intent=ReadOnly. -
AuthenticationsIntegrated Security=true. -
Passwordsslužba Active Directory Integrated,služba Active Directory Interactive,služba Active Directory Managed Identity,služba Active Directory MSI, ,služba Active Directory Defaultnebo .služba Active Directory Workload Identity -
User IDneboPasswords .služba Active Directory Device Code Flow
Zkontrolujte změny možností
Než změníte možnost ve výrobě:
- Zaznamenejte aktuální připojovací řetězec, verzi ovladače, typ endpointu a problém, který řešíte.
- Měňte jednu možnost po druhé.
- Otestujte navázání spojení, autentizaci, ověřování certifikátů, poolování, failover, rušení a provádění dotazů.
- Měřte latenci připojení, čekání na pool a chybová čísla.
- Potvrďte nastavení na každé nasazené instanci.
Změněný připojovací řetězec vytvoří nový pool. Během postupného nasazení existují současně staré i nové pooly, takže celkový počet fyzických připojení k serveru může stoupat.