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
Fyzické problémy, problémy s operačním systémem nebo se serverem SQL Server mohou způsobit selhání relace zrcadlení databáze. Zrcadlení databáze pravidelně nekontroluje komponenty, na nichž je Sqlservr.exe závislý, aby ověřilo, zda fungují správně nebo zda nedošlo k jejich selhání. U některých typů selhání však ovlivněná komponenta hlásí chybu Sqlservr.exe. Chyba hlášená jinou komponentou se nazývá pevná chyba. Aby bylo možné odhalit další selhání, která by jinak zůstala nepovšimnuta, používá zrcadlení databáze vlastní mechanismus časového limitu. Když dojde k vypršení časového limitu zrcadlení, zrcadlení databáze předpokládá, že došlo k selhání a deklaruje měkkou chybu. Některá selhání, ke kterým dochází na úrovni instance SQL Serveru, však nevedou k vypršení časového limitu zrcadlení a mohou zůstat neodhalena.
Important
Selhání jiných databází než zrcadlené databáze nelze během relace zrcadlení databáze zjistit. Chyba datového disku se navíc pravděpodobně nezjistí, pokud se databáze nerestartuje kvůli selhání datového disku.
Rychlost detekce chyb, a tedy i doba reakce relace zrcadlení na selhání, závisí na tom, zda je chyba tvrdá, nebo měkká. Některé pevné chyby, například selhání sítě, se hlásí okamžitě. V některých případech mohou období časového vypršení pro jednotlivé komponenty zpozdit hlášení některých kritických chyb. V případě měkkých chyb určuje délka časového limitu zrcadlení rychlost detekce chyb. Ve výchozím nastavení je toto období 10 sekund. Toto je minimální doporučená hodnota.
Selhání způsobená závažnými chybami
Mezi možné příčiny pevných chyb patří (ale nejsou omezeny) následující podmínky:
Přerušené připojení nebo drát
Chybná síťová karta
Změna směrovače
Změny v bráně firewall
Rekonfigurace koncového bodu
Ztráta jednotky, ve které se nachází transakční protokol
Selhání operačního systému nebo procesu
Pokud například jednotka protokolu v hlavní databázi přestane reagovat a selže, operační systém informuje Sqlservr.exe, že došlo k závažné chybě.
Některé komponenty, jako jsou síťové komponenty a některé subsystémy vstupně-výstupních operací, mají k určení selhání vlastní časový limit. Tyto časové limity jsou nezávislé na zrcadlení databáze, které o nich nemá žádné znalosti a zcela si neuvědomuje jejich chování. V těchto případech prodleva časového limitu prodlužuje dobu mezi selháním a okamžikem, kdy zrcadlení databáze obdrží výslednou závažnou chybu.
Note
Jediná aktivní kontrola chyb prováděná při zrcadlení databáze se vyskytuje pouze v případech měkkých chyb. Další informace viz "Selhání kvůli měkkým chybám" dále v tomto tématu.
Pokud chcete pomoct interpretovat chybové stavy, ke kterým dochází v síti, zeptejte se síťového inženýra, jaké chybové zprávy se posílají na port, když na připojení TCP dojde k následujícím událostem:
DNS nefunguje.
Kabely jsou odpojené.
Microsoft Windows má bránu firewall, která blokuje konkrétní port.
Aplikace, která monitoruje port, selže.
Server se systémem Windows se přejmenuje.
Server se systémem Windows se restartuje.
Note
Zrcadlení nechrání před problémy souvisejícími s klientským přístupem k serverům. Představte si například případ, kdy veřejný síťový adaptér zpracovává klientská připojení k instanci hlavního serveru, zatímco privátní síťová karta zpracovává veškerý zrcadlení provozu mezi instancemi serveru. V takovém případě by selhání veřejného síťového adaptéru zabránilo klientům v přístupu k databázi, i když by databáze byla i nadále zrcadlená.
Selhání kvůli měkkým chybám
Mezi podmínky, které můžou způsobit vypršení časového limitu zrcadlení, patří (ale nejsou omezené na):
Chyby sítě, jako jsou vypršení časového limitu propojení TCP, vyřazené nebo poškozené pakety nebo pakety, které jsou v nesprávném pořadí.
Operační systém, server nebo databáze, které nereagují.
Vypršel časový limit Windows serveru.
Nedostatek výpočetních prostředků, jako je přetížení procesoru nebo disku, zaplnění transakčního protokolu nebo nedostatek paměti nebo vláken systému. V těchto případech musíte prodloužit časový limit, snížit zatížení nebo změnit hardware tak, aby zvládl úlohy.
Mechanismus časového limitu zrcadlení
Protože měkké chyby nelze instancí serveru přímo detekovat, mohla by měkká chyba potenciálně způsobit, že instance serveru bude čekat neomezeně dlouho. Aby se tomu zabránilo, zrcadlení databáze implementuje vlastní mechanismus vypršení časového limitu na základě každé instance serveru v relaci zrcadlení, která odesílá příkaz ping na každé otevřené připojení v pevném intervalu.
Aby bylo připojení otevřené, musí instance serveru obdržet příkaz ping na toto připojení v definovaném časovém limitu a čas potřebný k odeslání jednoho dalšího příkazu ping. Příjem příkazu ping během časového limitu znamená, že připojení je stále otevřené a že instance serveru přes něj komunikují. Při příjmu příkazu ping instance serveru resetuje u daného připojení čítač časového limitu.
Pokud během časového limitu není na připojení přijat žádný ping, instance serveru považuje připojení za časově vypršené. Instance serveru uzavře připojení, u kterého vypršel časový limit, a zpracuje událost časového limitu podle stavu a provozního režimu relace.
I když druhý server skutečně pokračuje správně, považuje se za selhání vypršení časového limitu. Pokud je hodnota časového limitu relace vzhledem k obvyklé době odezvy kteréhokoli z partnerů příliš krátká, může docházet k falešným chybám. K falešnému selhání dochází, když jedna instance serveru úspěšně kontaktuje jinou instanci, jejíž doba odezvy je natolik dlouhá, že její odpovědi na ping nejsou přijaty před vypršením časového limitu.
Během relací v režimu vysokého výkonu je časový limit vždy nastaven na 10 sekund. To je obecně dostatečné, aby se zabránilo nepravdivým selháním. V relacích s vysokým bezpečnostním režimem je výchozí časový limit 10 sekund, ale dobu trvání můžete změnit. Abyste se vyhnuli falešným selháním, doporučujeme, aby časový limit zrcadlení činil vždy alespoň 10 sekund.
Změna hodnoty časového limitu (pouze režim vysoké bezpečnosti)
- Použijte příkaz ALTER DATABASE<database>SET PARTNER TIMEOUT <celé číslo>.
Zobrazení aktuální hodnoty časového limitu
- Dotaz na mirroring_connection_timeout v sys.database_mirroring.
Reakce na chybu
Bez ohledu na typ chyby reaguje instance serveru, která zjistí chybu odpovídajícím způsobem na základě role instance, provozního režimu relace a stavu jakéhokoli jiného připojení v relaci. Informace o tom, co nastane při ztrátě partnera, naleznete v tématu Provozní režimy zrcadlení databáze.
Viz také
Odhad přerušení služby během přepínání rolí (zrcadlení databáze)
Provozní režimy zrcadlení databáze
Přepínání rolí během zrcadlení databáze (SQL Server)
Zrcadlení databáze (SQL Server)