Možnosti připojení pro Microsoft. Data.SqlClient

Microsoft. Možnosti připojení Data.SqlClient určují, jak ovladač navazuje, identifikuje, směruje, obnovuje a sdružuje spojení. Nastavte je v připojovacím řetězci nebo prostřednictvím odpovídajících vlastností SqlConnectionStringBuilder.

Pro autentizaci Microsoft Entra ID viz Microsoft Entra ID autentizace. Pro nastavení TLS viz Šifrování a ověřování certifikátů.

Nastavte možnosti pomocí SqlConnectionStringBuilder

Použijte builder místo spojování fragmentů připojovací řetězec:

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,
};

Kód používá názvy stavitelských nemovitostí. Tabulky používají běžné zápisy řetězců připojení. Řidič také přijímá zdokumentované aliasy.

Možnosti timeoutu

Keyword Výchozí Behavior Version
Connect Timeout 15 sekund Omezuje to čas na navázání spojení. Když fond připojení dosáhne Max Pool Size, omezuje to také dobu čekání na použitelné připojení z fondu. Connection Timeout a Timeout jsou aliasy. Všechny verze Microsoft.Data.SqlClient
Command Timeout 30 sekund Nastavuje výchozí časový limit pro příkazy spojené s připojením. Nastavte CommandTimeout příkaz, když jedna operace vyžaduje jiný limit. Hodnota 0 není časově omezená a může způsobit, že úloha bude čekat neomezeně dlouho. Microsoft. Data.SqlClient 2.1 a novější verze

Časové limity připojení a příkazů se vztahují k různým operacím. Connect Timeout Neomezuje to provádění dotazů. Command Timeout Neomezuje autentizaci ani čekání na společné připojení.

CancellationToken je oddělen od obou nastavení. Předejte ji do OpenAsync, ke spouštění příkazů a metodám čtenáře, aby volající mohl přestat čekat před vypršením časového limitu.

Identita zátěže a možnosti směrování

Keyword Výchozí Behavior Version
Application Name Název definovaný poskytovatelem Identifikuje pracovní zátěž v SQL Server relacích, auditech a diagnostice. Pro každou nasazenou úlohu používejte jeden stabilní název s malou kardinalitou. Všechny verze Microsoft.Data.SqlClient
Application Intent ReadWrite ReadOnly požaduje směrování pro záměr čtení, když jsou pro něj nakonfigurovány cíl a skupina dostupnosti. Nezmění to příkazy SQL na příkazy jen pro čtení. Všechny verze Microsoft.Data.SqlClient

Application Intent=ReadOnly obvykle se spáruje s posluchačem skupiny dostupnosti nebo koncovým zařízením služby, které podporuje směrování čtení. Viz Vysoká dostupnost a obnova po havárii.

Možnosti sítě a paketů

Keyword Výchozí Behavior Version
Packet Size 8 000 bajtů Nastavuje velikost síťového paketu Tabulárního datového toku (TDS). Podporované hodnoty jsou od 512 do 32 768 bajtů. Nechte výchozí nastavení, pokud měření zátěže a konfigurace serveru neospravedlní změnu. Všechny verze Microsoft.Data.SqlClient
MultiSubnetFailover false Používá paralelní pokusy o navázání připojení TCP k IP adresám vráceným pro koncový bod s více adresami. Nastavte ho na true pro Azure SQL endpointy, skupinové posluchače dostupnosti a instance clusteru pro failover dosažené přes TCP. Všechny verze Microsoft.Data.SqlClient

MultiSubnetFailover=true není podporován u pojmenovaných instancí, ne-TCP protokolů, zrcadlení databází ani koncových zařízení konfigurovaných s více než 64 IP adresami. Je to bezpečné pro TCP koncový bod s jednou IP adresou.

Microsoft. Data.SqlClient 7.0 má také procesově orientovaný přepínač AppContext, který dokáže způsobit, že každé spojení se chová, jako by MultiSubnetFailover=true. Výchozí připojovací řetězec zůstáváfalse, když tento přepínač není povolen. Viz přepínače AppContext v SqlClient.

Možnosti sdružování

Keyword Výchozí Behavior Version
Pooling true Znovu používá fyzická spojení pro sladění konfigurací spojení. Vypněte to jen kvůli diagnostice nebo pro řízenou pracovní zátěž, kterou nelze bezpečně sdružovat. Všechny verze Microsoft.Data.SqlClient
Min Pool Size 0 Po jeho vytvoření si udrží alespoň tolik fyzických spojení v poolu. Kladná hodnota může udržet databázové relace otevřené, dokud pool nebo proces neskončí. Všechny verze Microsoft.Data.SqlClient
Max Pool Size 100 Omezuje počet fyzických připojení v jednom poolu. Žádosti čekají až do Connect Timeout, pokud je fond plný. Všechny verze Microsoft.Data.SqlClient
Load Balance Timeout 0 sekundy Vyřadí spojení, když se vrátí do poolu, pokud jeho stáří překročí tuto hodnotu. Connection Lifetime je alias. 0 Vylučuje odstraňování podle věku. Všechny verze Microsoft.Data.SqlClient
Pool Blocking Period Auto Ovládá, zda pool dočasně znovu vyhodí neúspěšné přihlášení v cache. Autodeaktivuje blokovací období pro rozpoznané Azure SQL endpointy a povoluje ho pro ostatní endpointy. Všechny verze Microsoft.Data.SqlClient
Enlist true Automaticky zaregistruje otevřené spojení do ambientní System.Transactions transakce. Všechny verze Microsoft.Data.SqlClient

Nastavení poolu platí pro každý samostatný pool, nikoli pro celý proces nebo databázový server. Před vyvoláním Max Pool Size, ověřte, že spojení a čtečky jsou rychle odstraněny a že databáze dokáže přijmout výsledný součet napříč každou instancí aplikace.

Pro klíče poolu, chování tokenů, blokovací období, vymazávání a diagnostiku viz SQL Server connection pooling.

Možnosti obnovy spojení

Keyword Výchozí Behavior Version
Connect Retry Count 1 Nastavuje počet opakování pro kvalifikační přechodné selhání během počátečního připojení a pro obnovení přerušeného nečinného spojení. Platná výchozí hodnota je 2 pro rozpoznané koncové body Azure SQL a 5 pro rozpoznané koncové body Azure Synapse a on-demand. 0 deaktivuje tyto opakované pokusy. Všechny verze Microsoft.Data.SqlClient
Connect Retry Interval 10 sekund Nastavuje zpoždění před pozdějšími pokusy o počáteční připojení nebo obnovení po nečinnosti. Platné hodnoty jsou od 1 do 60 sekund. Všechny verze Microsoft.Data.SqlClient

První pokus při obnově připojení je okamžitý. Connect Retry Interval platí i pro následující pokusy. Pro obejití vestavěného počátečního otevřeného pokusu pro jednu operaci použijte otevřené přetížení s OpenWithoutRetry.

Tato klíčová slova nezkoušejí znovu příkaz, který selže, zatímco běží. Použijte konfigurovatelnou logiku opakovaného pokusu pro vlastní politiku otevření nebo příkazů. Příkazy k opakování zkoušejte jen tehdy, když je bezpečné opakovat jejich efekty.

Možnosti identity serveru a certifikátů

Tyto možnosti splňují specifické požadavky na pojmenování certifikátů nebo v systému Kerberos. Nenahrazují běžnou autentizaci a ověřování certifikátů.

Keyword Výchozí Behavior Version
Host Name In Certificate Název hostitele serveru Poskytuje očekávaný obecný název (CN) nebo alternativní název subjektu (SAN), pokud připojení používá alias DNS, který se liší od názvu uvedeného v certifikátu. Microsoft. Data.SqlClient 5.0 a novější verze
Server Certificate Empty Poskytuje soubor PEM, DER nebo CER, který musí přesně odpovídat certifikátu serveru, když Encrypt=Mandatory nebo .Encrypt=Strict Microsoft. Data.SqlClient 5.1 a novější verze
Server SPN 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. Konfigurujte ho pouze tehdy, když nasazené pojmenování Kerberosu vyžaduje explicitní SPN. Microsoft. Data.SqlClient 5.0 a novější verze
Failover Partner SPN Odvozeno od failover partnera Přepisuje SPN jako partnera pro zrcadlení databáze. Zrcadlení databází je zastaralá funkce. Používejte skupiny dostupnosti pro nové nasazení. Microsoft. Data.SqlClient 5.0 a novější verze

Host Name In Certificate mění název používaný pro párování certifikátů. Nedůvěřuje nedůvěryhodnému vydavateli. Server Certificate je vázán na konkrétní soubor certifikátu a při obměně tohoto certifikátu vyžaduje aktualizaci aplikace.

Nesprávné přepsání SPN může zabránit autentizaci Kerberosu nebo oslabit zamýšlenou kontrolu identity. Opravte registraci DNS a SPN místo nastavování přepsání, pokud je to možné.

Udržujte spojovací řetězce malé. Přidej možnost jen tehdy, když můžeš uvést, jaké chování se mění a jak workload toto chování ověřuje.

Zkontrolujte změny možností

Před změnou možnosti ve výrobě:

  1. Zaznamenejte aktuální připojovací řetězec, verzi ovladače, typ koncového bodu a zjištěný problém.
  2. Měňte jedno chování po druhém.
  3. Otestujte navázání spojení, autentizaci, ověřování certifikátů, poolování, failover, rušení a provádění dotazů.
  4. Měřte pevná připojení, čekání na pool, latenci připojení a chybová čísla.
  5. Potvrďte nastavení na každé nasazené instanci.

Spojovací řetězce jsou součástí klíče poolu. Postupné nasazení může dočasně vytvořit jak staré, tak nové pooly, což zvyšuje celkový počet fyzických databázových připojení.