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.

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:

  1. Configure -T669 jako parametr uruchamiania. Te flagi śledzenia uniemożliwiają kwerendom użytkowników kolejkowanie żądań procesu oczyszczania widma.

  2. 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.

  3. 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

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?

Dziękujemy za opinię!

×