Objawy
Zaraz po ukończeniu odzyskiwania bazy danych i włączeniu połączeń klienckich podczas uruchamiania programu Microsoft SQL Server można zauważyć co najmniej jeden z następujących symptomów.
Objaw 1
W dzienniku błędów programu SQL Server są wyświetlane komunikaty o błędach i potwierdzenia podobne do poniższych:
Uwaga
2014-12-13 08:03:34.85 spid24s Używanie 'dbghelp.dll' wersja '4.0.5'
2014-12-13 08:03:34.85 spid24s **Gwint zrzutu - spid = 0, EC = 0x0000000082274B20
2014-12-13 08:03:34.85 spid24s ***Zrzut stosu wysyłany do C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\LOG\SQLDump0001.txt
2014-12-13 08:03:34.85 spid24s * *******************************************************************************
2014-12-13 08:03:34.85 spid24s *
2014-12-13 08:03:34.85 spid24s * ROZPOCZNIJ ZRZUT STOSU:
2014-12-13 08:03:34.85 spid24s * 12/13/14 08:03:34 spid 24
2014-12-13 08:03:34.85 spid24s *
2014-12-13 08:03:34.85 spid24s * Lokalizacja: ghost.cpp:1742
2014-12-13 08:03:34.85 spid24s * Wyrażenie: tcln1 != NULL
2014-12-13 08:03:34.85 spid24s * SPID: 24
2014-12-13 08:03:34.85 spid24s * Identyfikator procesu: 35444
2014-12-13 08:03:34.85 spid24s *
2014-12-13 08:03:35.47 spid24s Błąd: 17066, Istotność: 16, Stan: 1.
2014-12-13 08:03:35.47 spid24s SQL Server Asercja: Plik: <ghost.cpp>, line=1742 Niepowodzenie asercji = 'tcln1 != NULL'. Ten błąd może być związany z chronometrażem. Jeśli błąd będzie się powtarzał po ponownym uruchomieniu instrukcji, sprawdź integralność strukturalną bazy danych za pomocą polecenia DBCC CHECKDB lub uruchom ponownie serwer, aby upewnić się, że struktury danych w pamięci nie są uszkodzone.
Objaw 2
W dzienniku błędów programu SQL Server pojawiają się komunikaty o błędach i wyjątki podobne do poniższych:
Uwaga
2014-12-13 12:38:30.25 spid51 Przy użyciu dbghelp.dll wersji "4.0.5"
2014-12-13 12:38:30.25 spid51 ***Zrzut stosu wysyłany do C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\LOG\SQLDump0003.txt
2014-12-13 12:38:30.25 spid51 SqlDumpExceptionHandler: Proces 51 wygenerował wyjątek krytyczny c0000005 EXCEPTION_ACCESS_VIOLATION. Program SQL Server kończy ten proces.
2014-12-13 12:38:30.25 spid51 * *******************************************************************************
2014-12-13 12:38:30.25 spid51 *
2014-12-13 12:38:30.25 spid51 * ROZPOCZNIJ ZRZUT STOSU:
2014-12-13 12:38:30.25 spid51 * 12/13/14 12:38:30 spid 51
2014-12-13 12:38:30.25 spid51 *
2014-12-13 12:38:30.25 spid51 *
2014-12-13 12:38:30.25 spid51 * Adres wyjątku = 000000000030D47C Moduł(sqlservr + 000000000000FD47C)
2014-12-13 12:38:30.25 spid51 * Kod wyjątku = c0000005 EXCEPTION_ACCESS_VIOLATION
2014-12-13 12:38:30.25 spid51 * Nastąpiło naruszenie dostępu: odczyt adresu FFFFFFFFFFFFFFFF
2014-12-13 12:38:30.25 spid51 * Bufor wejściowy 54 bajty -
2014-12-13 12:38:30.25 SPID51 * Exec usp_select1
2014-12-13 12:38:30.77 Błąd serwera: 17310, Ważność: 20, Stan: 1.
2014-12-13 12:38:30.77 Serwer Żądanie użytkownika z sesji z SPID 51 wygenerowało wyjątek krytyczny. SQL Server kończy tę sesję. Skontaktuj się z Pomocą techniczną produktu i przekaż zrzut utworzony w katalogu dziennika.
Naruszenie zasad dostępu będzie miało następujący stos wywołań:
sqlservr! TaskGhostCleanup::IsHashed+0x8d
sqlservr! TaskGhostCleanup::Enqueue+0x32
sqlservr! IndexRowScanner::MoveToRowOnNextPage+0x9c
sqlservr! IndexDataSetSession::GetNextRowValuesInternal+0x11cb
Objaw 3
Po odebraniu komunikatów wymienionych w poprzednich sekcjach symptomów w dzienniku błędów programu SQL Server pojawiają się następujące komunikaty:
Uwaga
2014-12-13 08:04:53.37 Proces serwera 0:0:0 (0x23c8) Pracownik 0x000000002880C1A0 wydaje się nie ustępować w Scheduler 23. Czas utworzenia wątku: 13062953007877. Przybliżony użyty procesor wątku: jądro 0 ms, użytkownik 0 ms. Wykorzystanie procesu 0%. Układ w stanie bezczynności 88%. Interwał: 70013 ms.
2014-12-13 08:04:53.37 Proces serwera 0:0:0 (0x71d8) Pracownik 0x000000002A8D21A0 wydaje się nie ustępować w Harmonogramie 30. Czas utworzenia wątku: 13062953007891. Przybliżony użyty procesor wątku: jądro 0 ms, użytkownik 0 ms. Wykorzystanie procesu 0%. Układ w stanie bezczynności 88%. Interwał: 70013 ms.
2014-12-13 08:04:53.38 Serwer ***Nie można pobrać kontekstu wątku dla spid 0
2014-12-13 08:04:53.38 Serwer* *******************************************************************************
2014-12-13 08:04:53.38 Serwer*
2014-12-13 08:04:53.38 Serwer * ROZPOCZNIJ ZRZUT STOSU:
2014-12-13 08:04:53.38 Serwer * 12/13/14 08:04:53 spid 29488
2014-12-13 08:04:53.38 Serwer*
2014-12-13 08:04:53.38 Serwer * Harmonogram nieyielding
2014-12-13 08:04:53.38 Serwer*
2014-12-13 08:04:53.38 Serwer* *******************************************************************************
2014-12-13 08:04:53.38 Sygnatura stosu serwera dla zrzutu jest 0x0000000000000341
2014-12-13 08:04:55.43 Kod powrotny zewnętrznego procesu zrzutu serwera 0x20000001. Proces zewnętrznego zrzutu nie zwrócił żadnych błędów.
2014-12-13 08:04:55.43 Proces serwera 0:0:0 (0x9358) Pracownik 0x0000000081CE41A0 wydaje się nie ustępować w Harmonogramie 4. Czas utworzenia wątku: 13062953009701. Przybliżony użyty procesor wątku: jądro 0 ms, użytkownik 15 ms. Wykorzystanie procesu 0%. Układ w stanie bezczynności 88%. Interwał: 70011 ms.
Obecnie program SQL Server może nie odpowiadać na żądania użytkowników. W takim przypadku należy ponownie uruchomić usługę, aby naprawić sytuację.
Przyczyna
Ten problem występuje, ponieważ zapytania użytkownika próbują użyć kolejek oczyszczania widm przed całkowitym zainicjowaniem tego procesu.
Rozwiązanie
Informacje o dodatkach Service Pack
Aby rozwiązać ten problem, należy uzyskać dodatek Service Pack 1 dla programu SQL Server 2014.
Aby uzyskać więcej informacji dotyczących dodatku Service Pack 1 (SP1) dla programu SQL Server 2014, zobacz informacje o błędach naprawionych w dodatku Service Pack 1 dla programu SQL Server 2014.
Poprawka dla programu SQL Server 2008 z dodatkiem SP4
Aby rozwiązać ten problem, należy zastosować 3034373 KB: Dla SQL Server 2008 z dodatkiem SP4 dostępny jest pakiet aktualizacji poprawek na żądanie.
Poprawka dla programu SQL Server 2008 R2 z dodatkiem SP3
Aby rozwiązać ten problem, należy zastosować 3033860 KB: Dla SQL Server 2008 R2 z dodatkiem SP3 dostępny jest pakiet aktualizacji poprawek na żądanie.
Informacje o aktualizacji zbiorczej
Ulepszenie funkcji zostało wprowadzone w następującej aktualizacji zbiorczej programu SQL Server.
Zbiorcza aktualizacja 6 dla systemu SQL Server 2014 /pl-pl/pomoc/3031047
Aktualizacja zbiorcza 4 dla dodatku SP2 SQL Server 2012 /en-us/help/3007556
Skumulowana aktualizacja 14 dla SQL Server 2012 z dodatkiem Service Pack 1 /en-us/help/3023636
Informacje o aktualizacjach zbiorczych dla programu SQL Server
Każda nowa aktualizacja zbiorcza programu SQL Server zawiera wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji skumulowanej. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:
- Najnowsza aktualizacja zbiorcza dla programu SQL Server 2014
- Najnowsza aktualizacja zbiorcza dla programu SQL Server 2012 z dodatkiem SP2
- Najnowsza aktualizacja zbiorcza dla programu SQL Server 2012 z dodatkiem SP1
Obejście
W celu obejścia tego problemu należy wykonać następujące czynności:
- Konfiguruj -T669 jako parametr uruchamiania. Te flagi śledzenia uniemożliwiają użytkownikom wysyłanie zapytań do kolejkowania żądań do procesu oczyszczania widma.
- Skonfiguruj alert agenta programu SQL Server, aby wyzwolić zadanie w komunikacie SQL 3408. Na przykład skonfiguruj następujący alert:
Odzyskiwanie zostało zakończone. To jest tylko komunikat informacyjny. Użytkownik nie musi podejmować żadnych działań. - Wewnątrz tego zadania uruchom skrypt TSQL, aby poczekać od 5 do 10 minut, a następnie uruchom polecenie DBCC TRACEOFF (669,-1).
Ta procedura zapewnia, że flaga śledzenia jest aktywna tylko podczas uruchamiania programu SQL Server. Użycie tej flagi śledzenia nie wpływa na normalne działanie procesu oczyszczania tła.
Stan
Firma Microsoft potwierdziła, że jest to problem z programem SQL Server, i obecnie bada rozwiązanie tego problemu. Ten artykuł z bazy wiedzy Knowledge Base zostanie zaktualizowany o dodatkowe informacje, gdy będą one dostępne.
Źródła informacji
Inside the Storage Engine: Dogłębne czyszczenie duchów
Alerty
sp_add_alert (Transact-SQL)
DBCC TRACEOFF (Transact-SQL)
Śledź flagi
Opcje uruchamiania aparatu bazy danych