Príznaky
Pozrite si nasledujúci scenár:
V rámci postupnej inovácie používate Microsoft SQL Server 2014 alebo Microsoft SQL Server 2012 Service Pack 2 (SP2) na serveri, ktorý hosťuje sekundárnu repliku skupiny dostupnosti.
Použili ste jednu z nasledujúcich aktualizácií inštalácie SQL Server:
- Kumulatívna aktualizácia SQL Server 2014 5
- SQL Server 2012 Service Pack 2, kumulatívna aktualizácia 4
- SQL Server 2012 Service Pack 2, kumulatívna aktualizácia 3
Dôležité Rýchla oprava uvedená v tomto článku nahrádza tieto kumulatívne aktualizácie. Neinštalujte tieto aktualizácie, ak ste to ešte neurobili.
Na dokončenie inštalácie kumulatívnej aktualizácie reštartujte túto sekundárnu repliku.
Pri zlyhaní zlyháte skupinu dostupnosti, ktorá presúva aktualizovanú sekundárnu repliku na primárnu rolu.
V tomto scenári sa na serveri so spusteným serverom SQL Server, ktorý teraz hosťuje primárnu repliku vašej skupiny dostupnosti, môžu vyskytnúť niektoré z nasledujúcich príznakov:
Sekundárne repliky sú nahlásené ako "NESYNCHRONIZUJÚ SA".
Pri zadávaní dotazu sys.dm_exec_requests si všimnete občasné blokovanie zámku medzi reláciami používateľa a reláciou, ktorej príkaz je nahlásený ako "DB_STARTUP". Môžete si tiež všimnúť blokovanie medzi príkazmi CHECKPOINT a DB_STARTUP.
Zablokovania, ktoré zahŕňajú reláciu, ktorá obnovila jednu z vašich databáz dostupnosti, sú uvedené v denníku chýb SQL Server. Tieto denníky vyzerajú asi takto:
<date/time> spid<xx> Recovery is writing a checkpoint in database <dbname/dbid>. Toto je
Iba informačná správa. Od používateľa sa nevyžaduje žiadna akcia.
<date/time> spid<xx> Recovery completed for database <dbname/dbid> in <x> second(s) (analýza)
<x> ms, opakovať <x> ms, vrátiť späť x><ms.) Táto správa má iba informačný charakter. Od používateľa sa nevyžaduje žiadna akcia.
…
<spid<xx> dátumu a času> Chyba: 1205, závažnosť: 13, Stav: 28.
<date/time> spid<xx> Transaction (Process ID <xx>) was deadlocked on lock resources with another
a bol vybraný ako obeť patovej situácie. Znova spustite transakciu.Ak je databáza dostupnosti zapnutá pre službu Microsoft SQL Server Service Broker, správy v databáze dostupnosti sa možno nespracujú úspešne. Ak spustíte nástroj na sledovanie Profiler a potom zachytíte udalosť "Broker:Klasifikácia správ", zaznamená sa nasledujúca udalosť:
9791, sprostredkovateľ je zakázaný v databáze odosielateľa
Poznámka: Nejde o systematický problém. Tieto kumulatívne aktualizácie môžete použiť v konfigurácii AlwaysOn bez toho, aby ste sa stretli s týmto problémom. Ak ste už použili tieto kumulatívne aktualizácie a tento problém ste nezaznamenali, váš systém nie je ovplyvnený a tieto informácie sa vás netýkajú.
Príčina
Tento problém sa vyskytuje, pretože medzi systémovými vláknami a pripojeniami používateľov sa niekedy vyskytuje stav súbehu. To zabráni logike opráv kumulatívnej aktualizácie získať zámky, ktoré sú potrebné na dokončenie procesu aktualizácie.
Riešenie
Ak chcete vyriešiť tento problém, použite nasledujúcu kritickú rýchlu opravu na požiadanie (COD):
3034679 OPRAVA: Skupiny dostupnosti AlwaysOn môžu byť hlásené ako NESYNCHRONIZUJÚ SA.
Dôležité Namiesto nasledujúcich kumulatívnych aktualizácií je potrebné použiť túto rýchlu opravu COD:
- Kumulatívna aktualizácia SQL Server 2014 5
- SQL Server 2012 Service Pack 2, kumulatívna aktualizácia 4
- SQL Server 2012 Service Pack 2, kumulatívna aktualizácia 3
Poznámka: Ak ste už použili tieto kumulatívne aktualizácie, na vyriešenie tohto problému budete musieť použiť nasledujúce alternatívne riešenie.
Alternatívne riešenie
Keďže tento problém je spôsobený rozporom medzi reláciou používateľa a reláciou inovácie s databázami dostupnosti počas prechodu databáz do primárnej roly, tento rozpor sa musí eliminovať, aby sa databázy mohli obnoviť z tohto stavu.
Tento problém môžete obísť vykonaním týchto krokov:
Vyskúšajte nasledujúce metódy v uvedenom poradí.
Postup 1: Eliminovanie prístupu k databázeKeď sa v databázach vyskytnú príznaky, ktoré sú uvedené v časti Príznaky, vykonajte podľa potreby jeden alebo oba nasledujúce kroky na odstránenie stavu blokovania zámku:
- Dotaz sys.dm_exec_requests na vyhľadanie relácií, v ktorých dochádza k blokovaniu uzamknutia v databázach dostupnosti. Na ukončenie týchto relácií použite príkaz KILL.
- Vypnite alebo zastavte aplikáciu, ktorá pristupuje k databázam dostupnosti.
Ak sa problém nevyrieši pomocou postupu 1, prejdite na postup 2.
Postup 2: Reštartovanie hostiteľského servera SQL ServerKeď sú prístup k aplikáciám a prístup používateľov stále zakázané, reštartujte inštanciu SQL Server, ktorá hosťuje ovplyvnené databázy dostupnosti. Postupujte takto:
- Zakážte automatické zabezpečenie skupiny dostupnosti pred zlyhaním.
- Reštartujte ovplyvnenú inštanciu SQL Server, ktorý hosťuje primárnu repliku.
- Zapnúť automatické zabezpečenie skupiny dostupnosti pred zlyhaním.
Po úplnom obnovení ovplyvnených databáz obnovte pripojiteľnosť aplikácie a používateľov.
Stav
Spoločnosť Microsoft potvrdila, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v časti Vzťahuje sa na.
Odkazy
Ďalšie informácie o kumulatívnych aktualizáciách ovplyvnených týmto problémom nájdete v týchto článkoch vedomostnej databázy Microsoft Knowledge Base: