Sommario
    Riparazione database SQL

    Come gestire la corruzione di un indice clustered in un database SQL?


    Sommario

      Riassunto: In questo blog si spiega come verificare se un indice clustered in SQL Server è danneggiato. Vengono inoltre illustrate le cause del danneggiamento di un indice clustered in SQL Server e come risolvere il problema. È possibile ripristinare il database dal backup o utilizzare il software di riparazione del database SQL per risolvere il danneggiamento dell'indice clustered in MS SQL Server.

      Il database Microsoft SQL Server è utilizzato da diverse medie e grandi aziende per archiviare e accedere a grandi quantità di dati in modo sicuro e affidabile. Sebbene il file MDF primario del database e il file NDF secondario siano molto affidabili, non sono immuni da danni.

      Il danneggiamento dei file di database SQL può essere dovuto a diversi motivi. Uno dei motivi è il danneggiamento dell’indice del cluster del database, che rende inaccessibili i dati memorizzati nei file MDF e NDF.

      Come verificare se l’indice in SQL Server è danneggiato?

      Se l’indice clustered di SQL Server è danneggiato, è possibile che venga visualizzato un messaggio di errore del tipo seguente:

       Server: Msg 1902, Level 16, State 3, Line 1
      Impossibile creare più di un indice clustered sulla tabella ‘Nome tabella’. Eliminare l’indice cluster esistente ‘Nome indice cluster’ prima di crearne un altro.

      Se non si riceve l’errore 1902 di SQL Server, è possibile verificare se l’indice del cluster è danneggiato nel modo seguente:

       – Provare a recuperare i dati di SQL Server da alcune righe. Se un indice è danneggiato, SQL Server visualizza valori eliminati o altri valori nelle righe del database.
      – Controllare il rapporto di log di SQL Server per verificare se i record sono stati modificati più di una volta o meno. Se i record sono stati modificati più di una volta, significa che l’indice è danneggiato.

      Quali sono le cause di corruzione degli indici cluster in MS SQL?

      Una tabella può avere un solo indice clustered perché l’indice clustered determina l’ordine di memorizzazione fisica dei dati nella tabella. L’errore 1902 di SQL Server indica che nella tabella è presente più di un indice clustered.

      Come risolvere la corruzione di un indice cluster in MS SQL?

      Poiché una tabella di un database SQL Server può avere un solo indice clusterizzato, qualsiasi indice aggiuntivo per la tabella deve essere creato come indice non clusterizzato. Se si desidera modificare il clustering della tabella del database SQL, è necessario eliminare l’indice clusterizzato esistente prima di crearne uno nuovo.

      Esistono due metodi per gestire il danneggiamento dell’indice clustered di SQL Server. Si può procedere in due modi: –
      Ripristino dal backup
      – Software di riparazione del database SQL

      Prima di continuare

      Prima di tentare di riparare l’indice clustered danneggiato nel database SQL, è necessario cercare di individuare le ragioni esatte del danneggiamento. Per farlo, è possibile utilizzare il comando integrato DBCC CHECKDB. L’esecuzione di questo comando consente di verificare l’integrità logica e fisica del database e restituisce l’ID del database, l’ID dell’oggetto e l’ID dell’indice danneggiato.

       DBCC CHECKDB (CorruptDBName) With No_InfoMsgs, All_ErrorMsgs,
      TableResults;
      GO
      Dopo aver controllato l’ID dell’indice, è possibile scegliere facilmente l’azione appropriata per risolvere il problema.

      Metodo 1 – Ripristino da backup

      Se esiste una copia di backup del database di SQL Server, è possibile ripristinarla in qualsiasi momento per ottenere la copia di lavoro del database del server. Tuttavia, questo metodo di ripristino a livello di pagina è utile solo se le modifiche apportate al database sono poche e solo una singola pagina dell’indice è stata danneggiata.

      Se diverse pagine del database in cluster sono danneggiate, è necessario eseguire il ripristino a livello di database.

      Leggete qui: Come recuperare un database in SQL Server da un file .Bak, passo dopo passo

      Metodo 2 – Utilizzare un software di riparazione del database SQL

      L’altro modo per affrontare il problema del danneggiamento del cluster di database SQL è utilizzare il software di riparazione del database SQL, che è in grado di riparare i file di database Microsoft SQL Server (MDF) corrotti o danneggiati in modo sicuro, affidabile e con successo. L’uso del software rende il processo rapido ed elimina l’intervento manuale. È anche la migliore alternativa se non si dispone di un backup.

      La strada da seguire: Stellar Repair for MS SQL

      Il software Stellar Repair for MS SQL risolve facilmente il problema dell’indice cluster. È un’applicazione facile da usare e offre diversi vantaggi insieme alla riparazione dei file MDF corrotti di SQL Server. Le sue funzionalità aggiuntive sono le seguenti:

      • Ripara i file MDF e NDF danneggiati
      • Recupera tabelle, indici, trigger, regole, chiavi e valori predefiniti.
      • Recupero dei record cancellati
      • Ricerca e ripristino di oggetti specifici del database
      • Salva i file riparati nei formati MDF (New MS SQL Database o Live MS SQL Database), XLS, CSV e HTML.
      • Supporta MS SQL Server 2019, 2017, 2016 e versioni inferiori.

      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