Quando si utilizza Microsoft SQL Server per allegare o accedere a un file di database MDF corrotto, potresti incontrare una serie di messaggi di errore che possono creare confusione. Di seguito, elencheremo tutti gli errori, ordinati per frequenza. Per ogni errore, ne delineeremo i sintomi, spiegheremo la causa esatta e forniremo file di esempio insieme ai file corretti da DataNumen SQL Recovery. Questo ti aiuterà a capire meglio questi errori. Nota 'xxx.MDF' rappresenterà il nome del tuo corrotto SQL Server File di database MDF.
Sulla base SQL Server o messaggi di errore CHECKDB, esistono tre tipi di errori:
-
- Errori di allocazione: Sappiamo che i dati nei file MDF e NDF sono allocati come pagine. E ci sono alcune pagine speciali che vengono utilizzate per la gestione delle allocazioni, come segue:
Tipo di pagina | Descrizione |
Pagina GAM | Memorizza le informazioni sulla mappa di allocazione globale (GAM). |
Pagina SGA | Memorizza le informazioni sulla mappa di allocazione globale condivisa (SGAM). |
Pagina I.A.M | Memorizza le informazioni sulla mappa di allocazione dell'indice (IAM). |
Pagina PFS | Memorizza le informazioni sull'allocazione PFS. |
Se una delle pagine di allocazione di cui sopra contiene errori o i dati gestiti da queste pagine di allocazione non sono coerenti con le informazioni sull'allocazione, allora SQL Server o CHECKDB riporterà errori di allocazione.
- Errori di coerenza: Nel pagine utilizzati per archiviare i dati, comprese le pagine di dati e le pagine di indice, se SQL Server o CHECKDB trovano qualsiasi incoerenza tra il contenuto della pagina e il checksum, quindi segnaleranno errori di coerenza
- Tutti gli altri errori: Potrebbero esserci altri errori che non rientrano nelle due categorie precedenti.
- xxxx.mdf non è un file di database primario. (Microsoft SQL Server, Errore: 5171)
- L'intestazione del file 'xxxx.mdf' non è un'intestazione di file di database valida. La proprietà FILE SIZE non è corretta.(Microsoft SQL Server, Errore:5172)
- SQL Server rilevato un errore di I/O basato sulla coerenza logica: checksum non corretto
- SQL Server rilevato un errore di I/O basato sulla coerenza logica: pagina strappata
- Si eliminano per errore alcuni record o alcune tabelle nel database.
SQL Server ha uno strumento integrato chiamato DBCC, Che ha CHECKDB o TABELLA DI CONTROLLO opzioni che possono aiutare a riparare un database MDF corrotto. Tuttavia, per file di database MDB gravemente danneggiati, DBCC CHECKDB o TABELLA DI CONTROLLO fallirà anche.
Errori di coerenza segnalati da CHECKDB:
- SQL Server rilevato un errore di I/O basato sulla coerenza logica: checksum non corretto
- La riga in sys.xxx non ha una riga corrispondente in sys.xxx.
- Errore tabella: ID oggetto ##, ID indice ## verrà ricostruito.
- Questo indice della tabella di sistema non può essere ricreato.
- ID oggetto ##, ID indice ##, ID partizione ##, ID unità di allocazione ## (tipo Sconosciuto), ID pagina (##:560) contiene un ID pagina errato nell'intestazione della pagina.
Errori di allocazione segnalati da CHECKDB:
- La pagina IAM (Index Allocation Map) è puntata dal puntatore successivo della pagina IAM
- L'estensione (##:##) nell'ID database ## è contrassegnata allocata in GAM, ma nessun SGAM o IAM l'ha allocata.
Tutti gli altri errori segnalati da CHECKDB:
- Failed:(-#######) L'esecuzione della query "DBCC CHECKDB(xxxx) WITH NO_INFOMSGS" non è riuscita con il seguente errore: "xxxx".
- Errore di I/O (ID pagina errata) rilevato durante la lettura all'offset 0x###### nel file 'xxxx.mdf'.
- Il sistema non è stato in grado di attivare una quantità sufficiente di database per ricostruire il registro
- Perdita di dati durante la riparazione con CHECKDB
- Il file sembra essere stato troncato dal sistema operativo.
- Durante la ripetizione di un'operazione registrata nel database 'xxxx', si è verificato un errore nell'ID del record di registro.