Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Dettagli
| Attributo | Valore |
|---|---|
| Nome prodotto | SQL Server |
| ID evento | 823 |
| Origine evento | MSSQLSERVER |
| Componente | SQLEngine |
| Nome simbolico | B_HARDERR |
| Testo del messaggio | Il sistema operativo ha restituito l'errore %ls a SQL Server durante un'operazione %S_MSG, all'offset %#016I64x nel file '%ls'. Per informazioni più dettagliate, vedere i messaggi aggiuntivi nel log degli errori di SQL Server e nel registro eventi di sistema. Si tratta di una condizione di errore grave a livello di sistema, che può compromettere l'integrità del database e deve essere corretta immediatamente. Eseguire una verifica di coerenza del database (DBCC CHECKDB). L'errore può essere causato da molti fattori. Per ulteriori informazioni, vedere la documentazione online di SQL Server. |
Spiegazione
SQL Server usa API Di Windows, ad esempio ReadFile, WriteFile, ReadFileScatter e WriteFileGather, per eseguire operazioni di I/O su file. Dopo che SQL Server esegue queste operazioni di I/O, verifica la presenza di eventuali condizioni di errore associate a queste chiamate API. Se le chiamate API hanno esito negativo con un errore del sistema operativo, SQL Server segnala l'errore 823.
Il messaggio di errore 823 contiene le informazioni seguenti:
File di database in cui è stata eseguita l'operazione di I/O.
L'offset all'interno del file in cui è stata tentata l'operazione di I/O. Questo offset è l'offset di byte fisico dall'inizio del file. La divisione di questo numero per 8.192 fornisce il numero di pagina logico che l'errore ha effetto.
Indica se l'operazione di I/O è una richiesta di lettura o scrittura.
Codice di errore del sistema operativo e descrizione dell'errore tra parentesi.
Errori generati dal sistema operativo
Un errore del sistema operativo si verifica quando una chiamata API Windows di lettura o scrittura non riesce e SQL Server rileva un errore del sistema operativo correlato alla chiamata API di Windows. Di seguito è riportato un esempio di messaggio dell'errore 823:
Error: 823, Severity: 24, State: 2.
The operating system returned error 1117 (The request could not be performed because of an I/O device error.) to SQL Server during a read at offset 0x0000002d460000 in file 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\mydb.MDF'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe, system-level error condition that threatens database integrity and must be corrected immediately. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
Errori generati da DBCC CHECKDB
È possibile che vengano visualizzati errori dell'istruzione DBCC CHECKDB nel database associato al file nel messaggio di errore. È possibile eseguire l'istruzione DBCC CHECKDB quando viene visualizzato un errore 823. Se l'istruzione DBCC CHECKDB non segnala errori, è probabile che si verifichi un problema di sistema intermittente o un problema del disco.
È possibile visualizzare altre informazioni di diagnostica per gli errori 823 nel file di log degli errori di SQL Server usando il flag di traccia 818. Per altre informazioni, vedere Diagnostica di SQL Server rileva problemi di I/O non segnalati a causa di letture non aggiornate o scritture perse.
Causa
Il messaggio di errore 823 indica in genere che si è verificato un problema con il sistema di archiviazione sottostante o l'hardware o un driver nel percorso della richiesta di I/O. Questo errore può verificarsi se sono presenti incoerenze nel file system o se il file di database è danneggiato. Per la lettura di un file, SQL Server ritenta la richiesta di lettura quattro volte prima che restituisca 823. Se l'operazione di ripetizione dei tentativi ha esito positivo, la query non ha esito negativo, ma il messaggio MSSQLSERVER_825 viene scritto nel log degli errori e nel registro eventi.
Azione dell'utente
Esaminare la tabella suspect_pages in
msdbper altre pagine che riscontrano questo problema (nello stesso database o database diversi).Verificare la coerenza dei database che si trovano nello stesso volume (come quello riportato nel messaggio 823) usando il
DBCC CHECKDBcomando . Se si trovano incoerenze dalDBCC CHECKDBcomando, usare le indicazioni riportate in Come risolvere gli errori di coerenza del database segnalati da DBCC CHECKB.Esaminare i registri eventi di Windows per eventuali errori o messaggi segnalati dal sistema operativo, da un dispositivo di archiviazione o da un driver di dispositivo. Se sono correlati a questo errore in qualche modo, risolvere prima tali errori. Ad esempio, a parte il messaggio 823, è anche possibile notare un evento come "Il driver ha rilevato un errore del controller in \Device\Harddisk4\DR4" segnalato dall'origine disco nel registro eventi. In tal caso, è necessario valutare se questo file è presente nel dispositivo e quindi correggere gli errori del disco.
Usare l'utilità SQLIOSim per verificare se questi errori 823 possono essere riprodotti al di fuori delle normali richieste di I/O di SQL Server. L'utilità SQLIOSim viene fornita con SQL Server 2008 e versioni successive, quindi non è necessario un download separato. In genere è possibile trovarla nella cartella
C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Binn.Collaborare con il fornitore dell'hardware o il produttore del dispositivo per assicurarsi che:
- I dispositivi hardware e la configurazione sono conformi ai requisiti di I/O di SQL Server.
- I driver di dispositivo e altri componenti software di supporto di tutti i dispositivi nel percorso di I/O sono aggiornati.
Se il fornitore dell'hardware o il produttore del dispositivo ha fornito le utilità di diagnostica, usarle per valutare l'integrità del sistema di I/O.
Valutare se sono presenti driver di filtro nel percorso di queste richieste di I/O in cui si verificano problemi.
Controllare se sono presenti aggiornamenti per questi driver di filtro.
È possibile rimuovere o disabilitare questi driver di filtro per osservare se il problema che causa l'errore 823 va via?
Esempio con errore del sistema operativo 21
In questo caso, l'errore del sistema operativo sottostante 21 indica che il dispositivo disco è offline e non è disponibile per il sistema operativo e SQL Server da usare.
Error: 823, Severity: 24, State: 2.
The operating system returned error 21 (The device is not ready.) to SQL Server during a read at offset 0x0000002d460000 in file 'E:\Program Files\Microsoft SQL Server\MSSQL\Data\mydb.MDF'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe, system-level error condition that threatens database integrity and must be corrected immediately. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.
Resolution
Se si verifica uno scenario simile, risolvere l'errore del sistema operativo sottostante. In questo caso, rivolgersi all'amministratore di sistema e al fornitore dell'hardware per assicurarsi che il dispositivo disco sia online e funzioni correttamente. Assicurarsi che non siano presenti errori o danni segnalati.
Una connessione di rete instabile può anche causare questo errore, ad esempio quando i file di database vengono archiviati in un dispositivo NAS (Network Attached Storage) o SAN a cui si accede tramite la rete. In casi come questo, potrebbe essere necessario controllare l'integrità fisica dei database dopo il ripristino del dispositivo disco eseguendo DBCC CHECKDB. Se vengono segnalati danni al database, ripristinare un ultimo backup valido del database noto.