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.
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
azure Synapse Analytics
Important
SQL Server Native Client (SNAC) není dodáván s:
- SQL Server 2022 (16.x) a novější verze
- SQL Server Management Studio 19 a novější verze
Pro vývoj nových aplikací se nedoporučuje nativní klient SQL Serveru (SQLNCLI nebo SQLNCLI11) a starší zprostředkovatel Microsoft OLE DB pro SQL Server (SQLOLEDB).
Pro nové projekty použijte jeden z následujících ovladačů:
Informace o SQLNCLI, které se dodává jako součást databázového stroje SQL Serveru (verze 2012 až 2019), naleznete v tomto support lifecycle exception.
Toto téma se zabývá podporou SQL Server Native Client (přidánou v SQL Server 2012 (11.x)) pro skupiny dostupnosti Always On. Pro více informací o skupinách dostupnosti Always On viz Availability Group Listeners, Client Connectivity, and Application Failover (SQL Server),Creation and Configuration of Availability Groups (SQL Server),Failover Clustering and Always On Availability Groups (SQL Server) a Active Secondaries: Readable Secondary Replicas (Always On Availability Groups).
V řetězci spojení můžete specifikovat posluchač skupiny dostupnosti dané skupiny dostupnosti. Pokud je nativní klientská aplikace SQL Server připojena k databázi ve skupině dostupnosti, která přejde přes failover, původní spojení je přerušeno a aplikace musí otevřít nové připojení, aby mohla pokračovat v práci po failoveru.
Pokud se nepřipojujete k posluchači skupiny dostupnosti a pokud je více IP adres přiřazeno k hostitelskému jménu, SQL Server Native Client bude postupně iterovat všechny IP adresy spojené s zadáním DNS. To může být časově náročné, pokud první IP adresa vrácená serverem DNS není vázána na žádnou síťovou kartu (NIC). Při připojení ke skupinovému posluchači dostupnosti se SQL Server Native Client snaží navázat spojení ke všem IP adresám paralelně a pokud pokus o připojení uspěje, ovladač všechny čekající pokusy o připojení zamítne.
Note
Zvýšení časového limitu připojení a implementace logiky opakovaného pokusu o spojení zvýší pravděpodobnost, že se aplikace připojí ke skupině dostupnosti. Také, protože spojení může selhat kvůli failoveru skupiny dostupnosti, měli byste implementovat logiku opakovaného pokusu o spojení a opakovat neúspěšné připojení, dokud se znovu nepřipojí.
Připojení pomocí MultiSubnetFailover
Při připojování k SQL Server 2012 availability group listeneru nebo instance clusteru SQL Server 2012 Failover=Yes vždy specifikujte MultiSubnetFailover=Yes. MultiSubnetFailover umožňuje rychlejší přepnutí pro všechny skupiny dostupnosti a instance clusteru failover v SQL Server 2012 a výrazně zkrátí dobu přerušení pro topologie Always On s jednou a více subsítěmi. Během failoveru více subsítí se klient pokusí o připojení paralelně. Během failoveru podsítě SQL Server Native Client agresivně znovu zkusí TCP připojení.
Vlastnost připojení MultiSubnetFailover označuje, že aplikace je nasazována ve skupině dostupnosti nebo v instanci Failover Cluster a že nativní klient SQL Server se pokusí připojit k databázi na primární instanci SQL Server tím, že se pokusí připojit ke všem IP adresám. Když je pro spojení specifikováno MultiSubnetFailover=Yes , klient se pokusí o TCP připojení opakovat rychleji než výchozí intervaly opakovaného přenosu TCP operačního systému. To umožňuje rychlejší opětovné připojení po převzetí služeb při selhání skupiny dostupnosti AlwaysOn nebo instance clusteru s podporou převzetí služeb při selhání AlwaysOn a platí pro skupiny dostupnosti s jednou i více podsítěmi a instance clusteru s podporou převzetí služeb při selhání.
Pro více informací o klíčových slovech připojovací řetězec viz Using Connection String Keywords with SQL Server Native Client.
Specifikace MultiSubnetFailover=Ano při připojení k něčemu jinému než k posluchači skupiny dostupnosti nebo instance clusteru Failover může mít negativní dopad na výkon a není podporována.
Použijte následující pokyny pro připojení k serveru ve skupině dostupnosti nebo v instanci failover clusteru:
Při připojení k jedné nebo vícenásobné podsíti použijte vlastnost spojení MultiSubnetFailover; Zlepší to výkon u obou.
Pro připojení ke skupině dostupnosti určete posluchača skupiny dostupnosti jako server ve vašem řetězci připojení.
Připojení k instanci SQL Serveru nakonfigurované s více než 64 IP adresami způsobí selhání připojení.
Chování aplikace, která používá vlastnost MultiSubnetFailover připojení, není ovlivněno podle typu autentizace: SQL Server Authentication, Kerberos Authentication nebo Windows Authentication.
Můžete zvýšit hodnotu loginTimeout , aby se přizpůsobila doba přehození a snížila se pokusy o opětovné připojení aplikace.
Distribuované transakce nejsou podporovány.
Pokud není aktivní směrování pouze pro čtení, připojení k sekundární replice ve skupině dostupnosti selže v následujících situacích:
Pokud sekundární umístění repliky není nakonfigurované tak, aby přijímalo připojení.
Pokud aplikace používá ApplicationIntent=ReadWrite (viz níže) a sekundární replika je nakonfigurována pro přístup pouze pro čtení.
Spojení selže, pokud je primární replika nakonfigurována tak, aby odmítala pouze čtení a řetězec spojení obsahuje ApplicationIntent=ReadOnly.
Přechod ze zrcadlení databáze na používání vícepodsíťových clusterů
K chybě připojení dojde, pokud jsou v připojovacím řetězci uvedena klíčová slova MultiSubnetFailover a Failover_Partner. Chyba nastane také v případě, že je použit MultiSubnetFailOver a SQL Server vrátí odpověď partnera pro failover, která označuje, že je součástí dvojice zrcadlení databáze.
Pokud upgradujete SQL Server nativní klientskou aplikaci, která aktuálně používá zrcadlení databáze, na scénář s více podsítěmi, měli byste odstranit vlastnost Failover_Partner connection a nahradit ji MultiSubnetFailover nastavenou na Yes a nahradit název serveru v připojovací řetězec za posluchač skupiny dostupnosti. Pokud spojovací řetězec používá Failover_Partner a MultiSubnetFailover=Ano, ovladač vygeneruje chybu. Pokud však řetězec spojení používá Failover_Partner a MultiSubnetFailover=No (nebo ApplicationIntent=ReadWrite), aplikace použije zrcadlení databáze.
Ovladač vrátí chybu, pokud je na primární databázi ve skupině dostupnosti použito zrcadlení databáze, a pokud je v řetězci připojení, který se připojuje k primární databázi místo k posluchači skupiny dostupnosti, použito MultiSubnetFailover= Yes.
Specifikovat záměr aplikace
Klíčové slovo ApplicationIntent můžete zadat ve svém spojovacím řetězci. Přiřaditelné hodnoty jsou ReadWrite (výchozí) nebo ReadOnly.
Když nastavíte ApplicationIntent=ReadOnly, klient při připojování požádá o zatížení čtením. Server vynucuje záměr při připojení a během příkazu do databáze USE .
Klíčové ApplicationIntent slovo nefunguje s legacy databázemi pouze pro čtení.
Cíle ReadOnly
Když spojení zvolí ReadOnly, je spojení přiřazeno k některé z následujících speciálních konfigurací, které mohou pro databázi existovat:
Vždy zapnutý. Databáze může pro cílovou databázi skupiny dostupnosti povolit nebo zakázat úlohy čtení. Tato volba se řídí použitím klauzule
ALLOW_CONNECTIONSu příkazů jazyka Transact-SQLPRIMARY_ROLEaSECONDARY_ROLE.
Pokud žádný z těchto speciálních cílů není k dispozici, čte se z běžné databáze.
Klíčové ApplicationIntent slovo umožňuje směrování pouze pro čtení.
Směrování pouze pro čtení
Směrování pouze pro čtení je funkce, která může zajistit dostupnost repliky databáze pouze pro čtení. Pro umožnění směrování pouze pro čtení platí vše následující:
Musíte se připojit ke skupinovému posluchači Always On availability.
Klíčové slovo připojovacího řetězce
ApplicationIntentmusí být nastaveno naReadOnly.Správce databáze musí nakonfigurovat skupinu dostupnosti tak, aby umožnila směrování pouze pro čtení.
Více připojení, z nichž každé používá směrování pouze pro čtení, nemusí být všechna připojena ke stejné replikě pouze pro čtení. Změny synchronizace databáze nebo změny v konfiguraci směrování serveru mohou vést k připojení klientů k různým replikám pouze pro čtení.
Můžete zajistit, aby se všechny požadavky jen pro čtení připojovaly ke stejné replice jen pro čtení, tím že neuvedete naslouchací proces skupiny dostupnosti v parametru Server připojovacího řetězce. Místo toho zadejte název instance pouze pro čtení.
Směrování pouze pro čtení může trvat déle než připojení k primárnímu kanálu. Je to proto, že směrování jen pro čtení se nejprve připojí k primární replice a pak vyhledá nejlepší dostupnou sekundární repliku pro čtení. Díky těmto několika krokům byste měli prodloužit login časovou pauzu alespoň na 30 sekund.
rozhraní ODBC
Byla přidána dvě klíčová slova ODBC připojovací řetězec pro podporu skupin dostupnosti Always On v nativním klientovi SQL Server:
ApplicationIntent
MultiSubnetFailover
Pro více informací o klíčových slovech ODBC připojovací řetězec v SQL Server Native Client viz Používání Connection String Keywords s SQL Server Native Client.
Ekvivalentní vlastnosti spojení jsou:
SQL_COPT_SS_APPLICATION_INTENT
SQL_COPT_SS_MULTISUBNET_FAILOVER
Pro více informací o vlastnostech spojení ODBC v SQL Server Native Client viz SQLSetConnectAttr.
Funkčnost klíčových slov ApplicationIntent a MultiSubnetFailover bude zpřístupněna v ODBC Data Source Administrator pro DSN, které používají ovladač SQL Server Native Client, počínaje SQL Server 2012 (11.x).
Nativní klientská ODBC aplikace SQL Server může použít jednu ze tří funkcí k navázání spojení:
| Function | Description |
|---|---|
| Sqlbrowseconnect | Seznam serverů vrácených přes SQLBrowseConnect nebude obsahovat vizuální sítě. Seznam serverů uvidíte pouze bez jakéhokoliv označení, zda je server samostatný, nebo primární či sekundární server v clusteru Windows Server Failover Clustering (WSFC), který obsahuje dvě nebo více instancí SQL Server povolených pro skupiny dostupnosti Always On. Pokud se připojíte k serveru a dojde k selhání, může to být proto, že jste se připojili k serveru a nastavení ApplicationIntent není kompatibilní s konfigurací serveru. Protože SQLBrowseConnect nerozpoznává servery v clusteru Windows Server Failover Clustering (WSFC), který obsahuje dvě nebo více instancí SQL Server povolených pro skupiny dostupnosti Always On, SQLBrowseConnect ignoruje klíčové slovo MultiSubnetFailover připojovací řetězec. |
| Sqlconnect | SQLConnect podporuje jak ApplicationIntent, tak MultiSubnetFailover prostřednictvím názvu zdroje dat (DSN) nebo vlastností připojení. |
| Sqldriverconnect | SQLDriverConnect podporuje ApplicationIntent a MultiSubnetFailover pomocí klíčových slov připojovací řetězec, vlastností spojení nebo DSN. |
OLE DB
OLE DB v nativním klientovi SQL Server nepodporuje klíčové slovo MultiSubnetFailover.
OLE DB v SQL Server Native Client podporuje aplikační záměr. Záměr aplikace se bude chovat stejně pro aplikace OLE DB jako pro aplikace ODBC (viz výše).
Jedno klíčové slovo OLE DB připojovací řetězec přidáno pro podporu skupin dostupnosti Always On v nativním klientovi SQL Server:
- Záměr aplikace
Pro více informací o klíčových slovech připojovací řetězec v SQL Server Native Client viz Using Connection String Keywords with SQL Server Native Client.
Ekvivalentní vlastnosti spojení jsou:
SSPROP_INIT_APPLICATIONINTENT
DBPROP_INIT_PROVIDERSTRING
Nativní klientská aplikace OLE DB pro SQL Server může použít jednu z metod pro určení záměru aplikace:
IDBInitialize::Initialize
IDBInitialize::Initialize používá dříve nakonfigurovanou sadu vlastností k inicializaci datového zdroje a vytvoření datového zdrojového objektu. Zadejte aplikační záměr jako vlastnost poskytovatele nebo jako součást rozšířeného řetězce vlastností.
IDataInitialize::GetDataSource
IDataInitialize::GetDataSource přijímá vstupní řetězec spojení, který může obsahovat klíčové slovo Application Intent .
IDBProperties::GetProperties
IDBProperties::GetProperties získá hodnotu vlastnosti, která je aktuálně nastavena ve zdroji dat. Hodnotu záměru aplikace můžete získat prostřednictvím nemovitosti DBPROP_INIT_PROVIDERSTRING a SSPROP_INIT_APPLICATIONINTENT.
IDBProperties::SetProperties
Pro nastavení hodnoty vlastnosti ApplicationIntent volejte IDBProperties::SetProperties a předejte vlastnost SSPROP_INIT_APPLICATIONINTENT s hodnotou "ReadWrite" nebo "ReadOnly", případně DBPROP_INIT_PROVIDERSTRING vlastnost s hodnotou obsahující "ApplicationIntent=ReadOnly" nebo "ApplicationIntent=ReadWrite".
Záměr aplikace můžete zadat v poli Vlastnosti záměru aplikace na záložce Vše v dialogovém okně Vlastnosti Data Link .
Když jsou implicitní spojení navázána, implicitní spojení použije nastavení záměru aplikace rodičovského spojení. Podobně více relací vytvořených ze stejného datového zdroje zdědí nastavení aplikačního záměru datového zdroje.