Sommario
    Riparazione database SQL

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


    Sommario

      Riassunto: 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):

      • In SQL Server Management Studio (SSMS), vada nell’Esplora oggetti e faccia clic con il pulsante destro del mouse su Database.
      • Poi seleziona l’opzione Ripristina database.
      Ripristina database
      • Nella pagina Generale, selezioni Dispositivo e poi prema il pulsante Sfoglia per selezionare il backup e premere OK.
      Nella pagina Generale

      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.

      • Scarichi il software dal sito ufficiale.
      • Installare il software e avviarlo.
      • Clicchi su Sfoglia per selezionare il file del database (può utilizzare il pulsante Cerca se non sa dove è memorizzato il file di dati).
      Clicchi su Sfoglia per selezionare il file del database
      • Una volta selezionato il file, clicchi sul pulsante Ripara.
      clicchi sul pulsante Ripara
      • Una volta riparati i dati, può salvarli in un nuovo database o in altri formati come CSV, HTML ed Excel.
      Una volta riparati i dati, può salvarli in un nuovo database

      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:

      • Controlli il suo hardware, in particolare i dischi, per assicurarsi che siano in buone condizioni di funzionamento. Sostituisca i dischi rigidi se sono vecchi o presentano errori. Se possibile, crei un RAID mirror per i dati di SQL Server.
      • Eviti gli attacchi di virus e malware. Si assicuri di installare un software antivirus e antispam.
      • Protegga la sua rete con i migliori firewall e segmentazione di rete e cripti i suoi dati. Crei reti VPN di certezza, se necessario.
      • Si assicuri di aggiornare il sistema operativo e il software con gli ultimi aggiornamenti.

      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.

      Was this article helpful?

      No NO

      Circa l'autore

      Himanshu Shakya

      Himanshu is a Tech Enthusiast and Blogger at Stellar, with expertise in data recovery solutions and a keen interest in emerging technologies. Fluent in Japanese, he brings a diverse skill set to his role, contributing to global tech conversations. Outside of work, Himanshu enjoys playing chess, sharpening his strategic thinking and problem-solving skills in his spare time.

      Post correlato

      PERCHÉ STELLAR® È LEADER MONDIALE

      Perché scegliere Stellar?

      • 0M+

        Clienti

      • 0+

        Anni di eccellenza

      • 0+

        Ingegneri R&S

      • 0+

        Paesi

      • 0+

        PARTNER

      • 0+

        Premi ricevuti