Come risolvere SQL Server Database Fatal Error 823?

A volte capita di visualizzare il messaggio di errore 823 nel server SQL e quando accade è difficile stabilirne il livello di gravità. Se persiste occorre trovare i motivi che lo causano e le eventuali soluzioni. In questo articolo mostreremo le cause e come risolvere l’errore numero 823 nel server SQL.

Che cosa è l’errore 823 nel database nel server SQL?

Il problema nel server SQL può essere associato a:

  1. Un errore del sistema operativo
  2. Un errore IO

In questo articolo parleremo dell’errore IO. Il messaggio di errore sarà il seguente:

Error: 823, Severity: 24, State: 2.
2010-03-06 22:41:19.55 spid58 The operating system returned error 38 (Reached the end of the file.) to SQL Server during a read at offset 0x000000a72c0000 in file ‘C:\Program Files\Microsoft SQL Server\ MSSQL\DATA\db.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

  • L’errore indica un file (solitamente un file .MDF) e l’operazione può essere letta o scritta. L’offset è lo slittamento fisico del byte dall’inizio del file. Si calcola come la pagina logica è il numero di slittamento 8192.
  • L’errore 832 è l’errore numerico. La gravità 24 significa e implica che può esserci un guasto del supporto e può essere necessario contattare il fornitore di hardware e/o ripristinare il database.

Il numero 4 viene utilizzato per differenziare l’errore da altri errori con lo stesso numero, ma in uno stato diverso.

Quali problemi sono associati all’errore 823 IO?

Questo problema può essere associato ai seguenti problemi:

  1. Una pagina danneggiata
  2. Un documento danneggiato
  3. Numero insufficiente di byte trasferiti

Cosa è una pagina danneggiata?

È una pagina che è stata scritta in modo errato. Potremmo affermare che l’Torn Page Detection scrive un bit per ogni 512 byte nella pagina e permette di scoprire quando la pagina non è stata scritta correttamente su disco, ma non specifica se i dati memorizzati sul disco sono effettivamente corretti, dato che un paio di byte possono essere stati scritti.

Quale è il messaggio di errore che indica una pagina danneggiata?

L’errore visualizzato sarà il seguente:

2015-08-05 16:51:18.90 spid17 Error: 823, Severity: 24, State: 2
2015-08-05 16:51:18.90 spid17 I/O errors (torn page) detected during read at offset 0x00000094004000 in file ‘c:\Program Files\Microsoft SQL Server\MSSQL\data\tempdb.mdf’

Come posso individuare un errore IO di una pagina danneggiata?

Puoi individuare questi errori quando si esegue il comando CHECKDB nel database.

Che cosa è un documento danneggiato?

È quando l’intestazione del documento non è la stessa di quella visualizzata quando si legge nel disco.

Perché un numero insufficiente di byte trasferiti si verifica nel server SQL?

Significa che la chiamata API è avvenuta con successo ma i byte trasferiti non sono quelli previsti.

Come risolvere l’errore 823 nel server SQL?

Il primo passo è eseguire il comando DBCC CHECKDB e provare a riparare il database utilizzando il codice seguente:

Il database necessita di essere in modalità utente singolo. Per impostare la modalità utente singolo, puoi impostarla utilizzando il seguente codice T-SQL:

Un altro modo per impostarla consiste nel cliccare con il tasto destro del mouse sul database in SSMS e cliccare Options. Per limitare l’accesso seleziona SINGLE USER:

Set database in modalità utente singolo

Esegui di nuovo “DBCC CHECKDB” per verificare che il database sia stato riparato:

  1. Se i problemi persistono, potrebbe trattarsi di un problema di hardware, di conseguenza dovresti riparare il tuo hard disk. Contatta i membri IT che si occupano dell’hardware. Inoltre, controlla se sono presenti dei problemi di formattazione del disco.
  2. Un’altra opzione potrebbe consistere nel ripristinare il tuo database eseguendo un backup. Una volta che il database è stato ripristinato, esegui CHECKDB per verificare che il problema si sia risolto.
  3. Se visualizzi un errore di pagina danneggiata, puoi utilizzare CHECKSUM e il torn page detection per riparare e verificare la presenza di errori.

Un’altra opzione è scaricare Stellar Repair per MS SQL. Questo software può essere scaricato cliccando sul pulsante Download Gratuito:

Questo software riparerà il file .MDF. Prima è necessario arrestare il servizio di SQL Server. È consigliato arrestare il servizio utilizzando SQL Server Management Studio (SSMS) oppure SQL Server Configuration Manager.

Arresta il servizio SQL Server

Se non sai dove si trovano i file, puoi utilizzare I seguenti codici T-SQL  (il servizio SQL deve essere avviato):

Una volta che il file .MDF file viene indicato, clicca sul pulsante Repair:

Nota: se hai uno o più file secondari (file .NDF) associati al tuo database, sposta tutti i file nella posizione del file MDF. Quando hai terminato, puoi riavviare il servizio SQL Server e tornare ed eseguire nuovamente il comando CHECKDB.

Lo strumento di riparazione SQL ripara i file .MDF e .NDF, e finalmente non visualizzerai più l’errore 823 del server SQL.

Conclusione

In questo articolo abbiamo scoperto diversi motivi che producono l’errore 823 del server SQL e come risolvere questo problema. Il quale può essere causato dall’hardware (errori del disco, interruzioni di corrente) o da problemi del sistema. Abbiamo anche mostrato come risolverlo con un backup, con CHECKDB a alla fine utilizzando Stellar Repair for MS SQL.

Stellar Repair for MS SQL è un semplice strumento di riparazione SQL. Se hai qualche domanda non esitare a contattarci, scrivendoci i tuoi dubbi e i tuoi commenti.