Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

Symptomy

W przypadku korzystania z funkcji dublowania bazy danych w programie Microsoft SQL Server 2012 lub Microsoft SQL Server 2014 może zostać wyświetlony warunek potwierdzenia, a dublowanie bazy danych zostanie wprowadzone do stanu wstrzymania.

Przyczyna

Ten problem występuje, ponieważ podczas przydzielania nowej strony program SQL Server uzyskuje blokadę X na nowej stronie. Program SQL Server umieści hobt_id (identyfikator sterty lub B-Tree), do którego należy Nowa strona w żądaniu blokady. Program SQL Server nie może jednak umieścić hobt_id w dzienniku dublowanym, a wyniki są różne w różnych działaniach blokowania między podstawowym i dublowanym. Można to szczegółowo wyjaśnić następująco:

  1. T1 na stronie P1 należy zablokować IX.

  2. T2 do podziału strony na P1, Przydziel nową stronę P2, a w systemie jest tu używana transakcja systemowa wysyłanie w postaci X na P2. W tym miejscu program SQL Server nie wprowadził hobt_id w dzienniku dublowania.

  3. Wysyłanie powoduje, że blokada T1 umożliwia przeniesienie blokady IX z P1 na P2.

  4. WYSŁANE, teraz T2 może używać strony P2, a T2 uzyskuje kolejną pozycję IX Lock na stronie P2.

  5. T1 Committed, teraz T2 to jedyna osoba posiadająca IX zamek na P2.

  6. Po przeprowadzeniu wielu wystąpień funkcji eskalacja blokady jest to spowodowane tym, że po zakończeniu eskalacji blokady T2 na woluminie P2 jest zwalniana wartość IX.

  7. Po usunięciu partii Strona P2 stała się pusta i zostanie wycofana z alokacji.

  8. Łącze T3 wymaga nowej strony i nastąpi przydzielenie P2, wymaga to zablokowania X, ale na zdublowanym kroku nie powiodło się z powodu kroku 6.

Na zdublowanym kroku 6 nie jest zwalniana blokada z IX, ponieważ hobt_id w bloku blokady są niepoprawne. Ta niepoprawna hobt_id jest dostępna w kroku 2, ponieważ program SQL Server nie umieszcza hobt_id w dzienniku dublowania. zazwyczaj nie widzisz żadnego problemu, ponieważ wysyłanie w kroku 2 jest bardzo krótkie, a blok blokowania z nieprawidłowym hobt_id zostanie zwolniony po jego zatwierdzeniu. Ponieważ jednak migracja blokady w programie step3 i wykonanie poniższych czynności (4 i 5), ten blok blokowania z nieprawidłowym hobt_id jest zachowywany i wreszcie powoduje problem. Ten problem nie występuje w podstawowym obszarze, ponieważ w kroku 2 jest używany prawidłowy hobt_id. Rekord dziennika nie ma poprawiejących hobt_id.

Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:

Obejście

Aby obejść ten problem, ponownie zainicjuj dublowanie, aby zakończyć stan wstrzymania.

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×