Riparare la corruzione del database: GAM, SGAM e IAM in SQL Server

Summary: In questo articolo, imparerà come diagnosticare e riparare i danni critici al database in SQL Server con le pagine GAM, SGAM e IAM. Imparerà a conoscere gli errori più comuni, a conoscere le strategie di diagnosi, riparazione e prevenzione e le soluzioni come il recupero del database o il software di riparazione di terze parti. Riceverà anche suggerimenti su come prevenire danni futuri.

In SQL Server, una pagina è l’unità di base per l’archiviazione dei dati e gli estensioni sono l’unità di base che aiuta a gestire le pagine in modo efficiente. Un’estensione è una combinazione di otto pagine fisicamente collegate. In SQL Server, esistono due tipi di mappe di allocazione che vengono utilizzate per registrare l’estensione di allocazione: Global Allocation MAP (GAM) e Shared Global Allocation MAP (SGAM). Esiste un’altra pagina, la Index Allocation Map (IAM), che registra le estensioni nella porzione di 4 GB del file di database di SQL Server utilizzata da un’unità di allocazione. A volte queste pagine del database SQL si corrompono per vari motivi e richiedono la riparazione del database danneggiato. In questo articolo, imparerà come diagnosticare e riparare la corruzione del database SQL – problemi di pagine GAM, SGAM e IAM in SQL Server. 

Cosa sono le pagine GAM, SGAM e IAM?

Le Pagine di allocazione globale (GAM) sono responsabili della gestione degli estensioni di allocazione all’interno del database. Aiutano a identificare gli estensioni libere, se necessario.

Le pagine SGAM (Shared Allocation Map) sono come mappe granulari. Gestiscono l’assegnazione di estensioni a gruppi di file specifici nel database.

Le pagine Index Allocation Map (IAM) sono pagine interne speciali che funzionano come un registro per l’archiviazione dei dati. Tracciano la posizione della pagina dati nel file del database.

Come si diagnosticano i guasti delle pagine GAM, SGAM e IAM?

Se esegue le query, potrebbe ricevere un messaggio di errore simile a questo:

Msg 8905, livello 16, stato 1, riga 1
L'estensione (5678:1234) nel database ID 10 è contrassegnata come assegnata nel GAM, ma nessun SGAM o IAM l'ha assegnata.

Questo errore indica che la pagina GAM è danneggiata.

Un altro modo per riconoscere gli errori nelle pagine del database è quello di utilizzare il comando DBCC CHECKDB (veda l’esempio seguente).

DBCC CHECKDB (stellardb)
VAI

Esiste un comando non documentato chiamato dbcc PAGE. Si tratta di un comando interno utilizzato da Microsoft. Tuttavia, può utilizzarlo per diagnosticare le pagine del database. Ecco il codice per utilizzare questo comando.

DBCC PAGE (stellardb, 1, 354, CON NOHEADER)
VAI

Qui stellardb è il nome del database, 1 è il numero di file e 354 è il numero di pagina.

Come risolvere la corruzione delle pagine GAM, SGAM e IAM nel database SQL?

Qui troverà alcune soluzioni per risolvere gli errori di pagina GAM, SGAM e IAM, nonché la corruzione del database SQL.

Ripristinare il database dal backup

Se dispone di una copia di backup, può utilizzarla per ripristinare i suoi dati. Ecco i passaggi per ripristinare il backup di un database con SQL Server Management Studio (SSMS):

Utilizzi il comando DBCC CHECKDB

Per risolvere gli errori di pagina GAM, SGAM e IAM e la corruzione del database, può utilizzare il comando DBCC CHECKDB in SQL Server. Ecco il codice per riparare il database con il comando DBCC CHECKDB:

Usare il master;
VAI
ALTER DATABASE stellar
IMPOSTARE SINGLE_USER
CON ROLLBACK IMMEDIATO;
VAI
DBCC CHECKDB('stellar', REPAIR_REBUILD)
VAI
ALTER DATABASE stellar
IMPOSTARE MULTI_UTENTE;
VAI

Il codice di cui sopra va al database del sistema master, mette il database in modalità utente singolo, ripara il database e lo rimette in modalità multiutente.

Utilizza un software di riparazione del database SQL di terze parti

Se il comando DBCC CHECKDB non riesce a riparare il database, può utilizzare un software di riparazione SQL di terze parti, ad esempio Stellar Repair for MS SQL. Questo software può riparare i file di database di SQL Server (mdf e ndf) in modo semplice. Può recuperare tutti i dati dai file di database danneggiati e salvarli in un nuovo file di database o in vari altri formati.

Per riparare il database con Stellar Repair for MS SQL, proceda come segue:

Nota: metta il database offline prima di avviare il processo di riparazione.

Le migliori pratiche per prevenire la corruzione dei siti GAM, SGAM e IAM

Ecco alcuni consigli utili che può seguire per evitare di danneggiare le pagine del database di SQL Server:

Conclusione

Se le pagine GAM, SGAM o IAM del database sono danneggiate, è più facile ripristinare il database dall’ultimo backup. Se il backup è obsoleto o non funziona, può provare a riparare il database con il comando DBCC CHECKDB. In alcune situazioni, il comando DBCC CHECKDB non funziona. In questo caso, può utilizzare Stellar Repair for MS SQL. Questo software può facilmente riparare il database danneggiato e ripristinare tutti gli oggetti con integrità completa.

Related Post

Exit mobile version