Příznaky
Zvažte následující scénář:
-
Používáte Microsoft SQL Server 2014 nebo Microsoft SQL Server 2012 Service Pack 2 (SP2) na serveru, který hostuje sekundární repliku skupiny dostupnosti v rámci postupného upgradu.
-
Na instalaci SQL serveru jste použili jednu z následujících aktualizací:
-
SQL Server 2014 kumulativní aktualizace 5
-
Aktualizace SQL Server 2012 Service Pack 2, kumulativní aktualizace 4
-
Aktualizace SQL Server 2012 Service Pack 2, kumulativní aktualizace 3
Důležité Tyto kumulativní aktualizace nahrazuje oprava hotfix, která je uvedená v tomto článku. Pokud jste to ještě neudělali, tyto aktualizace neinstalujte.
-
-
Chcete-li dokončit instalaci kumulativní aktualizace, restartujte tuto sekundární repliku.
-
Přes skupinu dostupnosti, která převádí aktualizovanou sekundární repliku na primární roli, se stala chyba.
V tomto scénáři se může na serveru, na kterém je nainstalovaný SQL Server, vyskytnout některé z následujících příznaků:
-
Sekundární repliky jsou hlášeny jako neprobíhá synchronizace.
-
Při dotazování sys.dm_exec_requests zaznamenáte přerušované blokování mezi relacemi uživatelů a relací, jejíž příkaz je hlášen jako "DB_STARTUP". Můžete také zaznamenat blokování mezi příkazy kontrolního bodu a DB_STARTUP .
-
Zablokování, které zahrnuje relaci, která obnovila jednu z vašich databází dostupnosti, se oznamují v protokolu chyb SQL serveru. Tyto protokoly se podobají následujícím: <date/time> spid<xx> Recovery is writing a checkpoint in database <dbname/dbid>. This isan informational message only. No user action is required.<date/time> spid<xx> Recovery completed for database <dbname/dbid> in <x> second(s) (analysis<x> ms, redo <x> ms, undo <x> ms.) This is an informational message only. No user action is required.…<date/time> spid<xx> Error: 1205, Severity: 13, State: 28.<date/time> spid<xx> Transaction (Process ID <xx>) was deadlocked on lock resources with anotherprocess and has been chosen as the deadlock victim. Rerun the transaction.
-
Pokud je vaše databáze dostupnosti povolená pro Microsoft SQL Server Service Broker, zprávy v databázi dostupnosti se nemusí zpracovat úspěšně. Pokud spustíte nástroj pro trasování profileru a potom zachytíte událost "Broker: klasifikovat zprávu", bude zachycena následující událost:
9791, bude zprostředkovatel zakázán v databázi odesílatele.
Poznámka Toto není systematický problém. Tyto kumulativní aktualizace se můžou v konfiguraci AlwaysOn použít, aniž by došlo k tomuto problému. Pokud jste tyto kumulativní aktualizace už použili a tento problém jste neinformovali, váš systém vás neovlivní a tyto informace se na vás nevztahují.
Příčina
K tomuto problému dochází, protože se někdy vyskytne spor mezi systémovými vlákny a uživatelskými připojeními. Tím se zabrání logice opravy kumulativní aktualizace, která se má získat u zámků potřebných k dokončení procesu aktualizace.
Řešení
Tento problém vyřešíte instalací následující kritické opravy hotfix na vyžádání (COD) :
3034679 Oprava: skupiny dostupnosti AlwaysOn můžou být nahlášené jako nesynchronizovat.Důležité Tuto opravu hotfix pro tresku obecné musíte použít místo následujících kumulativních aktualizací:
-
SQL Server 2014 kumulativní aktualizace 5
-
Aktualizace SQL Server 2012 Service Pack 2, kumulativní aktualizace 4
-
Aktualizace SQL Server 2012 Service Pack 2, kumulativní aktualizace 3
Poznámka Pokud jste tyto kumulativní aktualizace už použili, je potřeba tento problém vyřešit pomocí následujících kroků.
Alternativní řešení
Vzhledem k tomu, že tento problém je způsoben tím, že se při přechodu databází na primární roli vyskytl obsah mezi relací uživatele a upgradem na databáze dostupnosti Tento problém vyřešíte takto:
-
Vyzkoušejte následující metody v uvedeném pořadí.
Metoda 1: vyloučení přístupu k databáziKdyž v databázích dochází k chybám, které jsou zmíněné v části Příznaky, použijte jeden nebo oba následující kroky, aby se odstranila podmínka blokování uzamčení:
-
Query Sys.dm_exec_requests a vyhledejte relace, ve kterých se v databázích dostupnosti nachází blokující zámek. Ukončete tyto relace pomocí příkazu Kill .
-
Zakázání nebo ukončení aplikace, která přistupuje k databázím dostupnosti
Pokud se tím problém nevyřeší, přejděte na metodu 2.
Metoda 2: Restartujte hostitelský server SQL serveruPokud je přístup k aplikaci a přístup uživatelů stále zakázán, restartujte instanci systému SQL Server, která je hostitelem ohrožených databází dostupnosti. Postupujte takto:
-
Zakáže automatické převzetí služeb při selhání ve skupině dostupnosti.
-
Restartujte příslušnou instanci SQL serveru, která je hostitelem primární repliky.
-
Povolte automatické převzetí služeb při selhání ve skupině dostupnosti.
-
-
Po úplném obnovení příslušných databází obnovte připojení aplikací a uživatelů.
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.
Odkazy
Další informace o kumulativních aktualizacích, kterých se tento problém týká, najdete v následujících článcích znalostní báze Microsoft Knowledge Base: