BUG #: 470086 (SQL Server 8.0)

Sintomi

Se a causa di problemi del sistema operativo, driver o hardware perduto scrittura condizioni o condizioni di lettura non aggiornate, si possono vedere messaggi di errore correlati integrità dei dati, ad esempio gli errori 605, 823, 3448, 3456. Si possono ricevere messaggi di errore analoghi ai seguenti esempi:


2003-07-24 16:43:04.57 Getpage spid63: bstat = 0x9, sstat = 0x800, cache
2003-07-24 16:43:04.57 spid63 pageno è/dovrebbe essere: objid è/dovrebbe essere:
2003-07-24 16:43:04.57 spid63 (1:7040966)/(1:7040966) 2093354622/2039782424

2003-07-24 16:43:04.57 spid63... IAM indica che tale pagina è allocata a questo oggetto

Errore spid63 di 16:52:37.67 2003-07-24: 605, gravità: 21, stato: 1
2003-07-24 16:52:37.67 spid63 tentativo di recuperare la pagina logica (1:7040966) nel database "pubs" appartiene all'oggetto 'autori', non per titoli' oggetto'...


Errore spid63 di 16:52:40.99 2003-07-24: 3448, gravità: 21, stato: 1
2003-07-24 16:52:40.99 spid63 Impossibile annullare il record di log (63361:16876:181), per l'ID di transazione (0:159696956), nella pagina (1:7040977), database (database ID 12) "pubs". Le informazioni della pagina: LSN = (63192:958360:10), tipo = 2. Registrare le informazioni: OpCode = 2, il contesto 1...


2003-07-09 14:31:35.92 spid66 errore: 823, gravità: 24, stato: 2
2003-07-09 14:31:35.92 spid66 errore i/o (ID di pagina non valida) rilevato durante la lettura all'offset 0x00000016774000 nel file 'h:\sql\MSSQL\data\tempdb.mdf'...

Errore spid17s di 15:57:24.14-2010-02-06: 3456, gravità: 21, stato: 1.
2010-02-06 15:57:24.14 spid17s non è riuscito (58997:5252:28), il record del log per l'ID di transazione (0:109000187), nella pagina (1:480946), database "MyDatabase" (database ID 17). Pagina: LSN = (58997:5234:17), tipo = 3. REG: OpCode = 2, 5, contesto PrevPageLSN: (58997:5243:17). Ripristinare da un backup del database o riparare il database.

Ulteriori informazioni

Microsoft ha introdotto le funzionalità di gestione estesa a partire da SQL Server 2000 Service Pack 4 e questi diagnostica è stati parte del prodotto in SQL Server 2005 e versioni successive. Queste funzionalità sono progettate per rilevare problemi esterni dei / o e per la risoluzione dei messaggi di errore descritto nella sezione "Sintomi"

Se viene visualizzato uno dei messaggi di errore menzionati nella sezione "Sintomi" e non possa essere giustificate da un evento, ad esempio un errore di unità fisica, quindi esaminare eventuali problemi noti con SQL Server, il sistema operativo, i driver e hardware. Provare a eseguire la diagnostica fornire informazioni sulle due condizioni seguenti:

  • Perdita di scrittura: Una chiamata all'API WriteFile , ma il sistema operativo, un driver o il controller di memorizzazione nella cache non correttamente svuotare i dati ai supporti fisici, anche se SQL Server viene informato che la scrittura è stata completata.

  • Lettura non aggiornato: Una chiamata all'API di ReadFile , ma il sistema operativo, un driver o il controller di memorizzazione nella cache restituisce erroneamente una versione precedente dei dati.

Ad esempio, Microsoft ha confermato che gli scenari in cui una chiamata WriteFile API restituisce come esito positivo, ma una lettura immediata di successo del blocco di dati stesso restituisce dati meno recenti, inclusi i dati memorizzati nella cache di lettura dell'hardware probabilmente. In alcuni casi, questo problema si verifica a causa di un problema della cache di lettura. In altri casi, la scrittura di dati non vengono scritti sul disco fisico.

Per attivare la diagnostica supplementare per questi tipi di problemi, SQL Server è aggiunto il flag di traccia 818. È possibile specificare flag di traccia 818 come parametro di avvio,-T818, per il computer che esegue SQL Server, oppure è possibile eseguire l'istruzione seguente:

DBCC TRACEON(818, -1)


Il flag di traccia 818 consente a un buffer circolare in memoria che viene utilizzato per il rilevamento di che operazioni che vengono eseguite dal computer che esegue SQL Server, non tra ordinamento e workfile i/o di scrittura di 2.048 ultimo esito positivo. Quando si verificano errori come errore 605, 823 o 3448, valore LSN (numero) della sequenza di registro del buffer in ingresso viene confrontato con l'elenco di scrittura di recente. Se il numero LSN recuperati durante l'operazione di lettura è precedente rispetto a quello specificato durante l'operazione di scrittura, un nuovo messaggio di errore viene registrato nel log degli errori di SQL Server. Maggior parte delle operazioni di scrittura di SQL Server si verificano come punti di arresto o scritture lazy. Una scrittura lazy è un'attività in background che utilizza i/o asincrono. L'implementazione del buffer circolare è leggero, rendendo così le prestazioni influiscono sul sistema trascurabile.

Il messaggio seguente indica che SQL Server non ha ricevuto un errore dalla chiamata all'API WriteFile o ReadFile API chiamata. Tuttavia, quando il numero LSN rivista, il valore non corretto:


SQL Server ha rilevato un livello di OS/hardware non segnalato leggere o scrittura problema nella pagina (1:75007) del database 12

LSN restituito (63361:16876:181), il numero LSN previsto (63361:16876:500)

Contattare il produttore dell'hardware e si consiglia di disattivare i meccanismi di memorizzazione nella cache per risolvere il problema


A partire da SQL Server 2005, il messaggio di errore viene segnalato come:


SQL Server ha rilevato un errore dei / o basate su coerenza logico: lettura non aggiornati. Si è verificato durante il << di lettura/scrittura >> della pagina << PAGEID >> nel database con ID << DBID >> all'offset << OFFSET fisico >> nel file << nome FILE >>. Altri messaggi nel SQL Server log degli errori del sistema o del log eventi possono fornire più dettagli. Si tratta di una condizione di errore grave che minaccia l'integrità del database e deve essere corretto immediatamente. Completare una verifica coerenza completo del database (DBCC CHECKDB). Questo errore può essere causato da molti fattori; Per ulteriori informazioni, vedere la documentazione in linea di SQL Server.


A questo punto, la cache di lettura contiene una versione precedente della pagina o i dati non vengano scritti correttamente sul disco fisico. In entrambi i casi (perso alla scrittura o lettura non aggiornati), SQL Server segnala un problema con il sistema operativo, driver o i livelli di hardware esterno.

Se 3448 errore si verifica quando si tenta di rollback di una transazione con errore 605 o errore 823, il computer che esegue SQL Server automaticamente chiude il database e tenta di aprire e ripristinare il database. La prima pagina in cui si verifica l'errore 605 o errore 823 è considerata una pagina non valida, e l'id della pagina viene mantenuta dal computer che esegue SQL Server. Durante il ripristino (prima della fase di ripristino) quando viene letto l'id di pagina non valida, i dettagli principali relative all'intestazione di pagina vengono registrati nel log degli errori di SQL Server. Questa azione è importante perché permette di distinguere tra gli scenari perso scrittura e lettura non aggiornati.

Si possono vedere i seguenti comportamenti comuni negli scenari di lettura non aggiornato:
I comportamenti indicati nel paragrafo precedente indicano un problema di memorizzazione nella cache di lettura e vengono spesso risolte disattivando la cache di lettura. Le azioni che sono descritti nel paragrafo precedente, in genere imporre un'invalidazione della cache e le letture di successo che si verificano mostra che il supporto fisico viene aggiornato correttamente. Il comportamento perso scrivere si verifica quando la pagina che viene letto il postback è ancora la versione precedente dei dati, anche dopo uno svuotamento forzato dei meccanismi di memorizzazione nella cache.

In alcuni casi, il problema potrebbe non essere specifico di una cache hardware. Può trattarsi di un problema con un driver di filtro. In tal caso, esaminare il software, comprese le utilità di backup e antivirus e quindi vedere se vi sono problemi con il driver di filtro.

Microsoft ha inoltre osservato le condizioni che non soddisfano i criteri per l'errore 605 o errore 823 ma sono dovute alla stessa attività di lettura non aggiornati o perdita di scrittura. In alcuni casi, viene visualizzata una pagina per aggiornare due volte, ma con il numero LSN stesso valore. Questo comportamento può verificarsi se l' ID di oggetto e l' ID di pagina corretto (pagina già allocato all'oggetto) e una modifica apportata alla pagina e scaricata su disco. Il successivo recupero pagina restituisce un'immagine precedente e quindi una seconda modifica venga apportata. Il log delle transazioni di SQL Server mostra che la pagina sia stata aggiornata due volte con lo stesso valore LSN. Questa operazione diventa un problema quando si tenta di ripristinare una sequenza di registro delle transazioni o con problemi di coerenza dei dati, ad esempio errori di chiave esterni o voci di dati mancanti. Il seguente messaggio di errore viene illustrato un esempio di questa condizione:


Errore: 3456, gravità: 21, stato: 1 non è riuscito (276666:1664:19), il record del log per l'ID di transazione (0:825853240), nella pagina (1:1787100), database 'autori' (7). Pagina: LSN = (276658:4501:9), tipo = 1. REG: OpCode = 4, scelta 2, PrevPageLSN: (275565:3959:31)...


Vengono descritti alcuni scenari in dettaglio negli elenchi seguenti:

  • LSN SequenceAction1Checkpoint
    2Begin Transaction
    3Table created or truncated
    4Inserts (Pages allocated)
    5Newly allocated page written to disk by Lazy Writer
    6Select from table – Scans IAM chain, newly allocated page read back from disk (LRU | HASHED = 0x9 in getpage message), encounters Error 605 - Invalid Object ID
    7Rollback of transaction initiated

  • LSN SequenceAction1Checkpoint
    2Begin Transaction
    3Page Modification
    4Page written to disk by Lazy Writer
    5Page read in for another modification (stale image returned)
    6Page Modified for a second time but because of stale image does not see first modification
    7Rollback – Fails – Transaction Log shows two different log records with the same PREV LSN for the page

Gli operatori di ordinamento' di SQL Server' eseguono attività dei / o, principalmente da e verso il database tempdb . Queste operazioni dei / o sono simili alle operazioni dei / o di buffer; Tuttavia, sono già stati progettati per utilizzare la logica di lettura Riprova per tentare di risolvere problemi analoghi. La diagnostica aggiuntiva illustrata in questo articolo non si applica a tali operazioni dei / o.

Microsoft ha rilevato che la causa principale per l'ordinamento seguente lettura errori indica in genere una lettura non aggiornati o una perdita di scrivere:


2003-04-01 20:13:31.38 asserzione di SQL Server spid122: File: < p:\sql\ntdbms\storeng\drs\include\record.inl >, riga = asserzione non riuscita 1447 = ' m_SizeRec > 0 & & m_SizeRec < = MAXDATAROW'.

2003-03-29 09:51:41.12 spid57 ordinamento (ID di pagina non valida) di errore di lettura. PageID = (0x1:0x13e9), dbid = 2, file = e:\Programmi\File c:\Programmi\Microsoft SQL Server\mssql\data\tempdb.mdf. Nuovo tentativo.

2003-03-29 09:51:41.13 spid57 errore: 823, gravità: 24, stato: 7
Errore dei / o spid57 09:51:41.13 2003-03-29 (ID di pagina non valida) rilevato durante la lettura all'offset 0x000000027d2000 nel file 'e:\Programmi\File c:\Programmi\Microsoft SQL Server\mssql\data\tempdb.mdf'...

* Module(sqlservr+00531097) 00931097 (utassert_fail + 000002E3)
* 005B1DA8 Module(sqlservr+001B1DA8) (RecBase::Resize+00000091)
* 00407EE7 Module(sqlservr+00007EE7) (RecBase::LocateColumn+00000012)
* Module(sqlservr+00452520) 00852520 (mergerow + 000000A4)
* 008522B3 Module(sqlservr+004522B3) (merge_getnext+00000285)
* 0085207D Module(sqlservr+0045207D) (mergenext+0000000D)
* 004FC5FB Module(sqlservr+000FC5FB) (getsorted+00000021)

I clienti che si sono verificati questi errori di ordinamento sono spesso risolti i problemi spostando tempdb in un'unità locale non supporta la memorizzazione nella cache oppure disattivando i meccanismi di memorizzazione nella cache di lettura.

Poiché una lettura non aggiornata o una perdita di scrittura nell'archivio dati che non è prevista, potrebbe verificarsi una vasta gamma di comportamenti. Risultare come dati mancanti, ma alcuni degli effetti più comuni dei dati mancanti vengono visualizzati come indice di errori, 644 errore o errore 625:


Errore 644 gravità livello 21 messaggio testo Impossibile trovare la voce di indice per RID ' %. * hs' nell'indice pagina %, %d, ID di indice del database ' %. * ls'.

Testo del messaggio di errore 625 gravità livello 21 Impossibile recuperare righe dalla pagina % dal RID perché il valore slotid (%d) non è valido.


Alcuni clienti hanno segnalato mancano le righe dopo eseguono attività di conteggio righe. Questo problema è causato da una scrittura persa. Ad esempio la pagina doveva essere collegati a catena di pagine di indice cluster. Se l'operazione è stata fisicamente perso, i dati inoltre vengono persi.

Importante Se si verifichino dei comportamenti o se si sospetti di problemi simili con la disattivazione di meccanismi di memorizzazione nella cache, si consiglia ottenere l'aggiornamento più recente per SQL Server e il simulatore di Stress i/o di SQL Server più recente. Microsoft inoltre consiglia vivamente di eseguire una verifica rigorosa del sistema operativo e le configurazioni associate.

Nota: Microsoft ha confermato che rare e pesanti carichi dei / o, alcune piattaforme hardware possono restituire una lettura non aggiornata. Se la diagnostica estesa indica un non aggiornati possibili in lettura/perso scrivere condizione, contattare il fornitore dell'hardware per il completamento immediato di e test con l'utilità SQLIOSim .

SQL Server richiede sistemi per supportare la consegna garantita su un supporto stabile come descritto in SQL Server i requisiti di affidabilità programma. Per ulteriori informazioni sui requisiti di input e outpui per il motore di database di SQL Server, vedere Requisiti di Microsoft SQL Server Database Engine Input/Output.

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?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×