Fehler 17066 oder 17310 beim Start SQL Server

Gilt für
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Enterprise SQL Server 2012 Developer SQL Server 2012 Express SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Express SQL Server 2008 Enterprise SQL Server 2008 Developer SQL Server 2008 Express Microsoft SQL Server 2005 Enterprise Edition Microsoft SQL Server 2005 Developer Edition Microsoft SQL Server 2005 Express Edition

Symptome

Beim Start von Microsoft SQL Server bemerken Sie eines oder mehrere der folgenden Symptome unmittelbar nach Abschluss der Datenbankwiederherstellung und aktivierten Clientverbindungen.

Symptom 1

Sie erhalten Fehlermeldungen und Assertionen, die in Ihrem SQL Server Fehlerprotokoll wie folgt aussehen:

Hinweis

2014-12-13 08:03:34.85 spid24s Using 'dbghelp.dll' version '4.0.5'
2014-12-13 08:03:34.85 spid24s **Dumpthread - spid = 0, EC = 0x0000000082274B20
2014-12-13 08:03:34.85 spid24s ***Stack Dump wird an 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 * BEGIN STACK DUMP:
2014-12-13 08:03:34.85 spid24s * 13.12.14 08:03:34 spid 24
2014-12-13 08:03:34.85 spid24s *
2014-12-13 08:03:34.85 spid24s * Standort: ghost.cpp:1742
2014-12-13 08:03:34.85 spid24s * Ausdruck: tcln1 != NULL
2014-12-13 08:03:34.85 spid24s * SPID: 24
2014-12-13 08:03:34.85 spid24s * Prozess-ID: 35444
2014-12-13 08:03:34.85 spid24s *

2014-12-13 08:03:35.47 spid24s Fehler: 17066, Schweregrad: 16, Status: 1.
2014-12-13 08:03:35.47 spid24s SQL Server Assertion: File: <ghost.cpp>, line=1742 Failed Assertion = 'tcln1 != NULL'. Dieser Fehler kann zeitlich bedingt sein. Wenn der Fehler nach dem erneuten Ausführen der Anweisung weiterhin auftritt, verwenden Sie DBCC CHECKDB, um die Datenbank auf strukturelle Integrität zu überprüfen, oder starten Sie den Server neu, um sicherzustellen, dass die In-Memory-Datenstrukturen nicht beschädigt sind.

Symptom 2

Sie erhalten Fehlermeldungen und Ausnahmen, die in Ihrem SQL Server Fehlerprotokoll wie folgt aussehen:

Hinweis

2014-12-13 12:38:30.25 spid51 Using 'dbghelp.dll' version '4.0.5'
2014-12-13 12:38:30.25 spid51 ***Stack Dump wird an C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\LOG\SQLDump0003.txt
2014-12-13 12:38:30.25 spid51 SqlDumpExceptionHandler: Process 51 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server beendet diesen Prozess.
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 * 13.12.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 * Exception Address = 0000000000030D47C Module(sqlservr+00000000000FD47C)
2014-12-13 12:38:30.25 spid51 * Ausnahmecode = c0000005 EXCEPTION_ACCESS_VIOLATION
2014-12-13 12:38:30.25 spid51 * Zugriffsverletzung aufgetreten Leseadresse FFFFFFFFFFFFFF
2014-12-13 12:38:30.25 spid51 * Eingabepuffer 54 Byte -
2014-12-13 12:38:30.25 spid51 * exec usp_select1

2014-12-13 12:38:30.77 Serverfehler: 17310, Schweregrad: 20, Status: 1.
2014-12-13 12:38:30.77 Server Eine Benutzeranforderung aus der Sitzung mit SPID 51 hat eine schwerwiegende Ausnahme generiert. SQL Server beendet diese Sitzung. Wenden Sie sich an den Produktsupport mit dem im Protokollverzeichnis erstellten Speicherabbild.

Die Zugriffsverletzung weist die folgende Aufrufliste auf:

Sqlservr.exe! TaskGhostCleanup::IsHashed+0x8d
Sqlservr.exe! TaskGhostCleanup::Enqueue+0x32
Sqlservr.exe! IndexRowScanner::MoveToRowOnNextPage+0x9c
Sqlservr.exe! IndexDataSetSession::GetNextRowValuesInternal+0x11cb

Symptom 3

Nachdem Sie die in den vorherigen Symptomabschnitten erwähnten Meldungen erhalten haben, erhalten Sie die folgenden Meldungen im SQL Server Fehlerprotokoll:

Hinweis

2014-12-13 08:04:53.37 Serverprozess 0:0:0 (0x23c8) Worker 0x000000002880C1A0 scheint auf Scheduler 23 nicht zu liefern. Threaderstellungszeit: 13062953007877. Ca. Verwendete Thread-CPU: Kernel 0 ms, Benutzer 0 ms. Prozessauslastung 0 %. Systemleerlauf 88 %. Intervall: 70013 ms.
2014-12-13 08:04:53.37 Server process 0:0:0 (0x71d8) Worker 0x000000002A8D21A0 scheint auf Scheduler 30 nicht zu liefern. Threaderstellungszeit: 13062953007891. Ca. Verwendete Thread-CPU: Kernel 0 ms, Benutzer 0 ms. Prozessauslastung 0 %. Systemleerlauf 88 %. Intervall: 70013 ms.
2014-12-13 08:04:53.38 Server ***Threadkontext für spid 0 kann nicht abgerufen werden
2014-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 * 13.12.14 08:04:53 spid 29488
2014-12-13 08:04:53.38 Server *
2014-12-13 08:04:53.38 Server * Non-Yielding Scheduler
2014-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 0x0000000000000341
2014-12-13 08:04:55.43 Server External dump process return code 0x20000001. Der externe Speicherabbildprozess hat keine Fehler zurückgegeben.
2014-12-13 08:04:55.43 Serverprozess 0:0:0 (0x9358) Worker 0x0000000081CE41A0 scheint auf Scheduler 4 nicht zu liefern. Threaderstellungszeit: 13062953009701. Ca. Verwendete Thread-CPU: Kernel 0 ms, Benutzer 15 ms. Prozessauslastung 0 %. Systemleerlauf 88 %. Intervall: 70011 ms.

SQL Server reagieren an diesem Punkt möglicherweise nicht auf Benutzeranforderungen. Wenn dies der Fall ist, müssen Sie den Dienst neu starten, um die Situation zu beheben.

Ursache

Dieses Problem tritt auf, weil Benutzerabfragen versuchen, die Warteschlangen für die Geisterbereinigung zu verwenden, bevor dieser Prozess vollständig initialisiert wird.

Lösung

Service Pack-Informationen

Um dieses Problem zu beheben, rufen Sie Service Pack 1 für SQL Server 2014 ab.

Weitere Informationen zu SQL Server 2014 Service Pack 1 (SP1) finden Sie unter Fehler, die in SQL Server 2014 Service Pack 1 behoben wurden.

Hotfix für SQL Server 2008 SP4

Wenden Sie zur Behebung dieses Problems KB-3034373 an: Ein bedarfsgesteuertes Hotfixupdatepaket ist für SQL Server 2008 SP4 verfügbar.

Hotfix für SQL Server 2008 R2 SP3

Wenden Sie zur Behebung dieses Problems KB-3033860 an: Ein bedarfsgesteuertes Hotfixupdatepaket ist für SQL Server 2008 R2 SP3 verfügbar.

Informationen zum kumulativen Update

Die Featureverbesserung wurde im folgenden kumulativen Update von SQL Server eingeführt.

Kumulatives Update 6 für SQL Server 2014 /en-us/help/3031047

Kumulatives Update 4 für SQL Server 2012 SP2 /en-us/help/3007556

Kumulatives Update 14 für SQL Server 2012 SP1 /en-us/help/3023636

Informationen zu kumulativen Updates für SQL Server

Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsfixes, die im vorherigen kumulativen Update enthalten waren. Sehen Sie sich die neuesten kumulativen Updates für SQL Server an:

      

Problemumgehung

Führen Sie die folgenden Schritte aus, um dieses Problem zu lösen:

  1. Konfigurieren Sie -T669 als Startparameter. Diese Ablaufverfolgungsflags verhindern, dass Benutzerabfragen Anforderungen an den Ghost-Cleanup-Prozess in die Warteschlange senden.
  2. Richten Sie eine SQL Server-Agent Warnung ein, um einen Auftrag in SQL Msg 3408 auszulösen. Richten Sie beispielsweise die folgende Warnung ein:
    Die Wiederherstellung ist abgeschlossen. Dies ist nur eine Informationsmeldung. Es ist keine Benutzeraktion erforderlich.
  3. Führen Sie in diesem Auftrag ein TSQL-Skript aus, um 5 bis 10 Minuten zu warten, und führen Sie dann den Befehl DBCC TRACEOFF (669,-1) aus.

Mit diesem Verfahren wird sichergestellt, dass dieses Ablaufverfolgungsflag nur während SQL Server Start aktiv ist. Die Verwendung dieses Ablaufverfolgungsflags wirkt sich nicht auf die übliche Funktion des Hintergrundbereinigungsprozesses aus.

Status

Microsoft hat bestätigt, dass dies ein Problem mit SQL Server ist, und prüft derzeit eine Lösung für dieses Problem. Dieser Knowledge Base-Artikel wird mit zusätzlichen Informationen aktualisiert, sobald er verfügbar wird.

Referenzmaterial

Innerhalb der Speicher-Engine: Ghost Cleanup im Detail
        
         Benachrichtigungen
        
         sp_add_alert (Transact-SQL)
        
         DBCC TRACEOFF (Transact-SQL)
        
         Ablaufverfolgungsflags
        
         Startoptionen für Datenbank-Engine