Odolnost nečinných připojení v ovladači OLE DB

Platí na: SQL Server 2014 (12.x) a novější verze Azure SQL DatabaseSQL database in Microsoft Fabric

Stáhnout ovladač OLE DB

Přehled

Počínaje ovladačem Microsoft OLE DB pro SQL Server verze 18.6.0 umožňuje odolnost připojení ovladači automaticky obnovit nefunkční nečinná připojení.

Následující diagram vysvětluje, jak funguje odolnost nečinných připojení v ovladači OLE DB: Diagram informací o odolnosti připojení

  1. V T1 se vytvoří připojení pomocí IDBInitialize::Initialize.
  2. Mezi ovladačem a serverem mezi T2 a T3 není žádná komunikace, což vede k nečinným připojením. Během této doby může být síťové připojení přerušeno. Přerušení může být něco jako síťové zařízení zavírání nečinného soketu nebo uvedení zařízení do pohotovostního režimu po krátkou dobu.
  3. V T3 se klientská aplikace pokusí spustit příkaz pomocí ovladače OLE DB (například pomocí ICommand::Execute. Ovladač zjistí, že připojení je přerušené a transparentně znovu naváže připojení.

Klíčová slova a vlastnosti

Keyword Vlastnictví Hodnoty Výchozí Description
ConnectRetryCount SSPROP_INIT_CONNECT_RETRY_COUNT Celočíselná hodnota mezi 0 a 255 (včetně) 1 Určuje maximální počet pokusů o opětovné připojení, pokud došlo k přerušení připojení. Ve výchozím nastavení se při přerušení připojení provede jeden pokus o opětovné navázání připojení. Hodnota 0 znamená, že se nebude pokoušet o opětovné připojení.
ConnectRetryInterval SSPROP_INIT_CONNECT_RETRY_INTERVAL Celé číslo mezi 1 a 60 (včetně) 10 Doba v sekundách mezi jednotlivými pokusy o opakování připojení. Toto klíčové slovo je ignorováno, pokud se ConnectRetryCount rovná 0.

Následující stránky obsahují další informace o nastavení těchto vlastností:

Pokud aplikace naváže připojení k DBPROP_INIT_PROMPT a později se pokusí spustit příkaz přes přerušené připojení, ovladač OLE DB dialogové okno znovu nezobrazí.

Při získávání stavu připojení prostřednictvím vlastnosti DBPROP_CONNECTIONSTATUS:

  • Během obnovení vrátí tato vlastnost DBPROPVAL_CS_INITIALIZED.
  • Pokud obnovení selhalo, vrátí se vlastnost DBPROPVAL_CS_COMMUNICATIONFAILURE.

Poznámka:

Pokud je časový limit příkazu (DBPROP_COMMANDTIMEOUT v DBPROPSET_ROWSET) nastavený na nenulovou hodnotu a obnovení připojení trvá déle, než je časový limit příkazu, připojení se neobnoví.

Obnovení připojení s asynchronním spouštěním

Pokud používáte asynchronní spuštění a připojení je potřeba obnovit, obnovení připojení proběhne synchronně před spuštěním asynchronního volání. Další informace o asynchronním spuštění naleznete v tématu Provádění asynchronních operací.

Očekávané chyby

Pokud obnovení připojení selže, může dojít k jedné z následujících chyb:

  • Připojení je přerušené a obnovení není možné. Klientský ovladač se pokusil připojení jednou nebo vícekrát obnovit a všechny pokusy se nezdařily. Zvyšte hodnotu ConnectRetryCount a zvyšte počet pokusů o obnovení.
  • Server nepotvrdil pokus o obnovení, obnovení připojení není možné.
  • Server nezachoval přesnou verzi TDS klienta požadovanou během pokusu o obnovení, obnovení připojení není možné.
  • Server nezachoval přesnou hlavní verzi serveru požadovanou během pokusu o obnovení, obnovení připojení není možné.
  • Připojení je přerušené a obnovení není možné. Připojení je označeno serverem jako neobnovitelné. Nebyl proveden žádný pokus o obnovení připojení.
  • Připojení je přerušené a obnovení není možné. Připojení je označeno klientským ovladačem jako neopravitelné. Nebyl proveden žádný pokus o obnovení připojení.
  • Server během pokusu o obnovení nezachoval šifrování SSL, obnovení připojení není možné.