Errore 17066 o 17310 durante l'avvio di SQL Server

Sintomi

Durante l'avvio di Microsoft SQL Server, si nota uno o più dei seguenti sintomi immediatamente dopo il ripristino del database e sono abilitate le connessioni client.

Sintomo 1

Si ricevono messaggi di errore e asserzioni simili alle seguenti nel registro errori di SQL Server:

13-12-2014 08:03:34.85 spid24s Using 'dbghelp. dll' versione '4.0.5'
13-12-2014 08:03:34.85 spid24s * * Dump thread - spid = 0, CE = 0x0000000082274B20
13-12-2014 08:03:34.85 spid24s * * * Dump dello Stack inviato a 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 *
spid24s 08:03:34.85 2014-12-13 * inizio DUMP dello STACK:
spid24s 08:03:34.85 2014-12-13 * 12/13/14 08:03:34 spid 24
2014-12-13 08:03:34.85 spid24s *
spid24s 08:03:34.85 2014-12-13 * percorso: ghost.cpp:1742
spid24s 08:03:34.85 2014-12-13 * espressione: tcln1! = NULL
spid24s 08:03:34.85 2014-12-13 * SPID: 24
spid24s 08:03:34.85 2014-12-13 * ID processo: 35444
2014-12-13 08:03:34.85 spid24s *

13-12-2014 08:03:35.47 spid24s errore: 17066, gravità: 16, stato: 1.
13-12-2014 08:03:35.47 asserzione di SQL Server spid24s: File: < ghost.cpp >, riga = asserzione non riuscita 1742 = ' tcln1! = NULL'. Questo errore può essere correlato alla temporizzazione. Se l'errore persiste dopo aver nuovamente eseguito l'istruzione, utilizzare DBCC CHECKDB per verificare l'l'integrità strutturale del database o riavviare il server affinché le strutture di dati in memoria non siano danneggiate.

Sintomo 2

Si ricevono messaggi di errore e eccezioni simile alle seguente nel registro errori di SQL Server:

13-12-2014 12:38:30.25 spid51 Using 'dbghelp. dll' versione '4.0.5'
13-12-2014 12:38:30.25 spid51 * * * Dump dello Stack inviato a C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\LOG\SQLDump0003.txt
13-12-2014 12:38:30.25 spid51 SqlDumpExceptionHandler: 51 processo generato l'eccezione irreversibile c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server, il processo verrà terminato.
2014-12-13 12:38:30.25 spid51 * *******************************************************************************
2014-12-13 12:38:30.25 spid51 *
spid51 12:38:30.25 2014-12-13 * inizio DUMP dello STACK:
spid51 12:38:30.25 2014-12-13 * 12/13/14 12:38:30 spid 51
2014-12-13 12:38:30.25 spid51 *
2014-12-13 12:38:30.25 spid51 *
spid51 12:38:30.25 2014-12-13 * indirizzo eccezione = 000000000030D47C Module(sqlservr+00000000000FD47C)
spid51 12:38:30.25 2014-12-13 * codice eccezione = c0000005 EXCEPTION_ACCESS_VIOLATION
spid51 12:38:30.25 2014-12-13 * violazione di accesso durante la lettura dell'indirizzo FFFFFFFFFFFFFFFF
spid51 12:38:30.25 2014-12-13 * byte di Input Buffer 54 -
spid51 12:38:30.25 2014-12-13 * exec usp_select1

Errore del Server di 2014-12-13 12:38:30.77: 17310, gravità: 20, stato: 1.
Richiesta di 2014-12-13 12:38:30.77 Server, un utente dalla sessione con SPID 51 generato un errore irreversibile. Chiusura sessione di SQL Server. Contatti il servizio supporto tecnico con il dump generati nella directory di registro.

La violazione di accesso avrà il seguente stack di chiamate:

sqlservr!TaskGhostCleanup::IsHashed+0x8d
sqlservr!TaskGhostCleanup::Enqueue+0x32
sqlservr!IndexRowScanner::MoveToRowOnNextPage+0x9c
sqlservr!IndexDataSetSession::GetNextRowValuesInternal+0x11cb

Sintomo 3

Dopo aver ricevuto i messaggi descritti nelle sezioni precedenti sui sintomi, i messaggi riportati di seguito sono visualizzati nel log degli errori di SQL Server:

13-12-2014 08:04:53.37 processo Server 0:0:0 (0x23c8) lavoratore 0x000000002880C1A0 sembra non cedente su 23 dell'utilità di pianificazione. Ora di creazione di thread: 13062953007877. Circa Thread della CPU utilizzato: kernel 0 ms, Sig. ra utente 0 utilizzo processo 0%. 88% di inattività del sistema. Intervallo: ms 70013
13-12-2014 08:04:53.37 processo Server 0:0:0 (0x71d8) 0x000000002A8D21A0 di lavoro sembra essere non cedente su 30 dell'utilità di pianificazione. Ora di creazione di thread: 13062953007891. Circa Thread della CPU utilizzato: kernel 0 ms, Sig. ra utente 0 utilizzo processo 0%. 88% di inattività del sistema. Intervallo: ms 70013
13-12-2014 08:04:53.38 Server * * * Impossibile ottenere il contesto di thread per spid 0
2014-12-13 08:04:53.38 Server * *******************************************************************************
13-12-2014 08:04:53.38 Server *
13-12-2014 08:04:53.38 Server * DUMP dello STACK iniziale:
13-12-2014 08:04:53.38 Server * 12/13/14 08:04:53 spid 29488
13-12-2014 08:04:53.38 Server *
13-12-2014 08:04:53.38 Server * utilità di pianificazione di Non cedere
13-12-2014 08:04:53.38 Server *
2014-12-13 08:04:53.38 Server * *******************************************************************************
13-12-2014 08:04:53.38 Server Stack firma per il dump è 0x0000000000000341
13-12-2014 08:04:55.43 processo dump Server esterni restituiscono codice 0x20000001. Il processo di dump esterno non ha restituito errori.
13-12-2014 08:04:55.43 processo Server 0:0:0 (0x9358) 0x0000000081CE41A0 di lavoro sembra essere non cedente in utilità di pianificazione 4. Ora di creazione del thread: 13062953009701. Thread utilizzato dalla CPU apross.: kernel 0 ms, utente 15 ms. Processo utilizzato 0%. 88% di inattività del sistema. Intervallo: 70011 ms


A questo punto, SQL Server potrebbe essere non rispondere alle richieste dell'utente. In questo caso, è necessario riavviare il servizio per risolvere la situazione.

Causa

Questo problema si verifica perché le query degli utenti tentano di utilizzare le code di pulitura ghost prima che questo processo è completamente inizializzato.

Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutte le correzioni di protezione che sono state incluse nell'aggiornamento cumulativo precedente. Estrarre gli ultimi aggiornamenti cumulativi per SQL Server:


Soluzione alternativa

Per risolvere questo problema, attenersi alla seguente procedura:

  1. Configurare -T669 come parametro di avvio. Questo flag di traccia impedisce che le query degli utenti accodino delle richieste al processo di pulitura ghost.

  2. Consente di impostare un avviso di agente SQL Server per attivare un processo in SQL Msg 3408. Ad esempio, si consiglia di impostare l'avviso seguente:

    Ripristino è completato. Si tratta di un messaggio informativo. Non è richiesta alcuna azione da parte dell'utente.

  3. All'interno di questo processo, eseguire uno script TSQL per attendere da 5 a 10 minuti e quindi eseguire il comando DBCC TRACEOFF (669, -1) .

Questa procedura assicura che questo flag di traccia è attivo solo durante l'avvio di SQL Server. L'uso di questo flag di traccia non pregiudicare il normale funzionamento del processo di pulitura in background ghost.

Stato

Microsoft ha confermato che si tratta di un problema con SQL Server e si sta attualmente esaminando una correzione per questo problema. In questo articolo della Knowledge Base riportato di seguito avranno con informazioni aggiuntive appena disponibili.

Riferimenti

All'interno del motore di archiviazione: Ghost cleanup in profondità

Avvisi

sp_add_alert (Transact-SQL)

DBCC TRACEOFF (Transact-SQL)

Flag di traccia

Opzioni di avvio del motore di database

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×