Symptomy
Podczas uruchamiania programu Microsoft SQL Server zauważysz co najmniej jeden z następujących objawów bezpośrednio po zakończeniu odzyskiwania bazy danych i włączeniu połączeń z klientami.
Symptom 1
W dzienniku błędów programu SQL Server są wyświetlane komunikaty o błędach i potwierdzenia podobne do następujących:
2014-12-13 08:03:34.85 spid24s Using 'dbghelp.dll' version '4.0.5'2014-12-13 08:03:34.85 spid24s **Dump thread - spid = 0, EC = 0x0000000082274B202014-12-13 08:03:34.85 spid24s ***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\LOG\SQLDump0001.txt2014-12-13 08:03:34.85 spid24s * *******************************************************************************2014-12-13 08:03:34.85 spid24s *2014-12-13 08:03:34.85 spid24s * BEGIN STACK DUMP:2014-12-13 08:03:34.85 spid24s * 12/13/14 08:03:34 spid 242014-12-13 08:03:34.85 spid24s *2014-12-13 08:03:34.85 spid24s * Location: ghost.cpp:17422014-12-13 08:03:34.85 spid24s * Expression: tcln1 != NULL2014-12-13 08:03:34.85 spid24s * SPID: 242014-12-13 08:03:34.85 spid24s * Process ID: 354442014-12-13 08:03:34.85 spid24s *2014-12-13 08:03:35.47 spid24s Error: 17066, Severity: 16, State: 1.2014-12-13 08:03:35.47 spid24s SQL Server Assertion: File: <ghost.cpp>, line=1742 Failed Assertion = 'tcln1 != NULL'. Ten błąd może być związany z chronometrażem. Jeśli błąd będzie nadal występował po ponownym uruchomieniu instrukcji, użyj polecenia DBCC CHECKDB w celu sprawdzenia integralności bazy danych w strukturze strukturalnej lub ponownego uruchomienia serwera, aby upewnić się, że struktury danych w pamięci nie są uszkodzone.
Symptom 2
W dzienniku błędów programu SQL Server są wyświetlane komunikaty o błędach i wyjątki podobne do następujących:
2014-12-13 12:38:30.25 spid51 przy użyciu języka "dbghelp. dll" wersja "4.0.5" 2014-12-13 12:38:30.25 spid51 * * * zrzut stosu wysyłany do katalogu C:\Program Files\Microsoft SQL Server \ MSSQL10_50. SQL2008R2\MSSQL\LOG\SQLDump0003.txt2014-12-13 12:38:30.25 spid51 SqlDumpExceptionHandler: Process 51 wygenerował wyjątek krytyczny c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.2014-12-13 12:38:30.25 spid51 * *******************************************************************************2014-12-13 12:38:30.25 spid51 *2014-12-13 12:38:30.25 spid51 * BEGIN STACK DUMP:2014-12-13 12:38:30.25 spid51 * 12/13/14 12:38:30 spid 512014-12-13 12:38:30.25 spid51 *2014-12-13 12:38:30.25 spid51 *2014-12-13 12:38:30.25 spid51 * Exception Address = 000000000030D47C Module(sqlservr+00000000000FD47C)2014-12-13 12:38:30.25 spid51 * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION2014-12-13 12:38:30.25 spid51 * Access Violation occurred reading address FFFFFFFFFFFFFFFF2014-12-13 12:38:30.25 spid51 * Input Buffer 54 bytes -2014-12-13 12:38:30.25 spid51 * exec usp_select12014-12-13 12:38:30.77 Server Error: 17310, Severity: 20, State: 1.2014-12-13 12:38:30.77 Server A user request from the session with SPID 51 generated a fatal exception. Program SQL Server przerywa tę sesję. Skontaktuj się z pomocą techniczną w sprawie produktu, korzystając z zrzutu utworzonego w katalogu dziennika. Naruszenie zasad dostępu będzie miało następujący stos wywołań: sqlservr! TaskGhostCleanup:: ishashd + 0x8dsqlservr! TaskGhostCleanup:: w kolejce + 0x32sqlservr! IndexRowScanner:: MoveToRowOnNextPage + 0x9csqlservr! IndexDataSetSession:: GetNextRowValuesInternal + 0x11cb
Objaw 3
Po otrzymaniu wiadomości, które wymieniono w poprzednich sekcjach objawów, w dzienniku błędów programu SQL Server są wyświetlane następujące komunikaty:
2014-12-13 08:04: proces 53.37 Server 0:0:0 (0x23c8) pracownik 0x000000002880C1A0 wygląda na brak wydajności w harmonogramie 23. Czas tworzenia wątku: 13062953007877. Przybliżone użycie procesora: jądro 0 MS, użytkownik 0 MS. Wykorzystanie procesów: 0%. Stan bezczynności systemu 88%. Interwał: 70013 MS. 2014-12-13 08:04: proces 53.37 Server 0:0:0 (0x71d8) Worker 0x000000002A8D21A0 wygląda na brak wydajności w harmonogramie 30. Czas tworzenia wątku: 13062953007891. Przybliżone użycie procesora: jądro 0 MS, użytkownik 0 MS. Wykorzystanie procesów: 0%. Stan bezczynności systemu 88%. Interval: 70013 ms.2014-12-13 08:04:53.38 Server ***Unable to get thread context for spid 02014-12-13 08:04:53.38 Server * *******************************************************************************2014-12-13 08:04:53.38 Server *2014-12-13 08:04:53.38 Server * BEGIN STACK DUMP:2014-12-13 08:04:53.38 Server * 12/13/14 08:04:53 spid 294882014-12-13 08:04:53.38 Server *2014-12-13 08:04:53.38 Server * Non-yielding Scheduler2014-12-13 08:04:53.38 Server *2014-12-13 08:04:53.38 Server * *******************************************************************************2014-12-13 08:04:53.38 Server Stack Signature for the dump is 0x00000000000003412014-12-13 08:04:55.43 Server External dump process return code 0x20000001. Proces zrzucania zewnętrznego nie zwrócił żadnych błędów. 2014 — 12-13 08:04:55.43 Server Process 0:0:0 (0x9358) pracownik 0x0000000081CE41A0 wygląda na brak wydajności w harmonogramie 4. Czas tworzenia wątku: 13062953009701. Przybliżone użycie procesora: jądro 0 MS, użytkownik 15 MS. Wykorzystanie procesów: 0%. Stan bezczynności systemu 88%. Interwał: 70011 MS.
Program SQL Server może przestać odpowiadać na prośby użytkowników w tym momencie. W takim przypadku należy ponownie uruchomić usługę, aby skorygować sytuację.
Przyczyna
Ten problem występuje, ponieważ przed pełnym zainicjowaniem procesu kwerendy użytkownika próbują użyć kolejek oczyszczania widm.
Rozwiązanie
Informacje o dodatku Service Pack
Aby rozwiązać ten problem, uzyskaj dodatek Service Pack 1 dla programu SQL Server 2014.
Aby uzyskać więcej informacji na temat dodatku Service Pack 1 (SP1) dla programu SQL Server 2014, zobacz błędy, które rozwiązano w dodatku SQL server 2014 z dodatkiem Service Pack 1.
Poprawka dla programu SQL Server 2008 z dodatkiem SP4
Aby rozwiązać ten problem, Zastosuj artykuł KB 3034373: pakiet aktualizacji poprawki na żądanie jest dostępny dla programu SQL Server 2008 z dodatkiem SP4.
Poprawka dla programu SQL Server 2008 R2 z dodatkiem SP3
Aby rozwiązać ten problem, Zastosuj artykuł KB 3033860: pakiet aktualizacji poprawki na żądanie jest dostępny dla programu SQL Server 2008 R2 z dodatkiem SP3.
Informacje o aktualizacji zbiorczej
Ulepszona funkcja została wprowadzona w poniższej zbiorczej aktualizacji programu SQL Server.
Zbiorcza aktualizacja 6 dla programu SQL Server 2014 /en-us/help/3031047
Zbiorcza aktualizacja 4 dla programu SQL Server 2012 z dodatkiem SP2 /en-us/help/3007556
Zbiorcza aktualizacja 14 dla programu SQL Server 2012 z dodatkiem SP1 /en-us/help/3023636
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, wykonaj następujące czynności:
-
Configure -T669 jako parametr uruchamiania. Te flagi śledzenia uniemożliwiają kwerendom użytkowników kolejkowanie żądań procesu oczyszczania widma.
-
Skonfiguruj alert programu SQL Server Agent, aby wyzwolić zadanie w programie SQL MSG 3408. Na przykład skonfiguruj następujący alert:
Odzyskiwanie zostało ukończone. Jest to tylko komunikat informacyjny. Nie jest wymagane wykonanie jakiejkolwiek czynności przez użytkownika.
-
W tym zadaniu Uruchom skrypt TSQL, aby czekać od 5 do 10 minut, a następnie uruchom polecenie DBCC TRACEOFF (669,-1) .
Ta procedura sprawdza, czy ta flaga śledzenia jest aktywna tylko podczas uruchamiania programu SQL Server. Użycie tej flagi śledzenia nie wpływa na zwykłe działanie procesu oczyszczania nieprawidłowego działania w tle.
Stan
Firma Microsoft potwierdziła, że jest to problem z programem SQL Server i obecnie badamy rozwiązanie tego problemu. Ten artykuł z bazy wiedzy zostanie zaktualizowany o dodatkowe informacje, które staną się dostępne.
Informacje
W aparacie magazynowania: Usuwanie duplikatów w alertach głębokości sp_add_alert (Transact-SQL) DBCC TRACEOFF (Transact-SQL) Opcje uruchamiania aparatu bazy danych funkcji śledzenia