Objawy
Rozważ następujący scenariusz:
-
2014 r. Microsoft SQL Server lub Microsoft SQL Server 2012 Service Pack 2 (SP2) są uruchomione na serwerze obsługującym wtórnego repliki grupy dostępności jako część uaktualnienia stopniowego.
-
Do instalacji programu SQL Server trzeba stosować jedną z następujących aktualizacji:
-
Zbiorcza aktualizacja programu SQL Server 2014 5
-
Zbiorcza aktualizacja programu SQL Server 2012 z dodatkiem Service Pack 2 4
-
Zbiorcza aktualizacja programu SQL Server 2012 z dodatkiem Service Pack 2 3
Ważne Poprawka opisana w tym artykule zastępuje te aktualizacje zbiorcze. Nie należy instalować te aktualizacje, jeśli użytkownik jeszcze nie zostało to zrobione.
-
-
Aby ukończyć instalowanie aktualizacji zbiorczej, uruchom ponownie tej repliki wtórnego.
-
Awaryjna grupy dostępności, która przechodzi zaktualizowane wtórnego repliki do roli podstawowego.
W tym scenariuszu może wystąpić jeden lub kilka z następujących symptomów na serwerze, na którym jest uruchomiony program SQL Server i który jest hosting podstawowego repliki grupy dostępności:
-
Pomocniczy repliki są zgłaszane jako "Nie SYNCHRONIZUJE."
-
Gdy kwerenda sys.dm_exec_requests, można zauważyć, blokady sporadyczne blokowanie między sesjami użytkowników i sesji, którego polecenia jest raportowana jako "DB_STARTUP." Można także zauważyć blokowanie między poleceniami punktu kontrolnego i DB_STARTUP .
-
Zakleszczenie, które dotyczą sesji, która odzyskane z jedną z baz danych dostępności są zgłaszane w dzienniku błędów programu SQL Server. Dzienniki te podobne do następujących:
<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 another
process and has been chosen as the deadlock victim. Rerun the transaction. -
Po włączeniu dostępność bazy danych programu Microsoft SQL Server Service Broker wiadomości dostępność bazy danych nie może pomyślnie przetworzona. Jeśli uruchamia narzędzie śledzenia programu Profiler, a następnie przechwycić zdarzenie "Klasyfikowanie brokera: wiadomości", są przechwytywane następujące zdarzenie:
9791, broker jest wyłączona w bazie danych nadawcy
Uwaga To nie problem systematyczny. Można zastosować te aktualizacje zbiorcze na konfiguracji AlwaysOn bez występuje ten problem. Jeśli użytkownik zastosował już te aktualizacje zbiorcze, a użytkownik nie zauważył ten problem, Twój system nie jest zagrożony, a informacje te można pominąć.
Przyczyna
Ten problem występuje, ponieważ czasami występuje sytuacja wyścigu między wątków systemu i połączenia użytkownika. Zapobiega to uzyskiwanie blokady, które są wymagane do przeprowadzenia procesu aktualizacji łatanie logikę aktualizacji zbiorczej.
Rozwiązanie
Aby rozwiązać ten problem, należy zastosować następującą poprawkę krytycznych na żądanie (COD) :
NAPRAW 3034679 : grupy dostępności (AlwaysOn) mogą być zgłaszane jako nie można ZSYNCHRONIZOWAĆ
Ważne Należy zastosować tę poprawkę DORSZA zamiast następujących aktualizacji zbiorczej:
-
Zbiorcza aktualizacja programu SQL Server 2014 5
-
Zbiorcza aktualizacja programu SQL Server 2012 z dodatkiem Service Pack 2 4
-
Zbiorcza aktualizacja programu SQL Server 2012 z dodatkiem Service Pack 2 3
Uwaga Jeśli użytkownik zastosował już te aktualizacje zbiorcze, należy użyć następujących obejść ten problem.
Obejście problemu
Ponieważ ten problem jest spowodowany przez rywalizację między sesji użytkownika i sesji uaktualniania przeciwko dostępność bazy danych podczas przejścia baz danych do roli podstawowego, należy wyeliminować ten zarzut, aby włączyć baz danych, aby odzyskać z tego stanu.
Aby obejść ten problem, wykonaj następujące kroki:
-
Należy wypróbować następujące metody w określonej kolejności.
Metoda 1: Wyeliminować bazy danych programu accessGdy baz danych występują symptomy, które są wymienione w sekcji "Symptomy", użyć jedną lub obie z następujących czynności w razie potrzeby wyeliminować warunek blokowania blokady:
-
Kwerenda sys.dm_exec_requests do lokalizowania sesje, w których blokady blokowania występuje w dostępność bazy danych. Aby zakończyć sesje te należy użyć instrukcji KILL .
-
Wyłącz lub zatrzymać aplikację, który uzyskuje dostęp do dostępność bazy danych.
Jeśli metoda 1 nie rozwiąże problemu, przejdź do metody 2.
Metoda 2: Uruchom ponownie serwer hosta programu SQL ServerDostęp do aplikacji i dostępem użytkowników nadal są wyłączone, ponownie uruchom wystąpienie programu SQL Server, obsługujący dotkniętych dostępność bazy danych. Aby to zrobić, wykonaj następujące kroki:
-
Wyłączanie automatycznej pracy awaryjnej grupy dostępności.
-
Uruchom ponownie dotkniętych instancji programu SQL Server, który obsługuje podstawowy replik.
-
Włącz automatyczne podejmowanie pracy awaryjnej grupy dostępności.
-
-
Po dotyczy baz odzyskać całkowicie, należy przywrócić łączność aplikacji i użytkownika.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.
Powiązane artykuły
Aby uzyskać więcej informacji dotyczących zbiorczej aktualizacji, których dotyczy ten problem zobacz następujące artykuły z bazy wiedzy Microsoft Knowledge Base: