Recupera un corrotto SQL Server Banca dati MDF

Quando si SQL Server Il database MDF è danneggiato, è possibile utilizzare i seguenti metodi per recuperare i dati in esso contenuti, per ridurre la perdita:

Nota: prima di eseguire qualsiasi operazione di ripristino dei dati, eseguire prima il backup dei file di database MDF e NDF corrotti.

  1. Prima di tutto, puoi provare SQL Server comando integrato DBCC CHECKDB per ripristinare il database. Supponendo che il file di database corrotto sia "MyDatabase.mdf", puoi procedere come segue per recuperare i dati al suo interno:
    1. Restart SQL Server.
    2. Non eseguire alcuna operazione.
    3. In SQL Server Management Studio, eseguire le seguenti istruzioni SQL:
      use master Declaration @databasename varchar(255) set @databasename='MyDatabase.mdf' exec sp_dboption @databasename, N'single', N'true' -- Imposta il database di destinazione sulla modalità utente singolo dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false' -- Ripristina il database di destinazione in modalità multiutente
      

      La dichiarazione

      dbcc checkdb(@nomedatabase,REPAIR_ALLOW_DATA_LOSS)
      

      può causare la perdita di alcuni dati nel database quando si esegue l'operazione di riparazione.

      Mentre la dichiarazione

      dbcc checkdb(@nomedatabase,REPAIR_REBUILD)
      

      NON causerà alcuna perdita di dati durante l'operazione di riparazione, ma richiede più tempo.

      Quindi, se non sei urgente, puoi prima provare a eseguire solo la seconda istruzione dbcc checkdb, se tale istruzione non può aiutare a recuperare il database, puoi eseguire il primo e il secondo comando dbcc checkdb.

      Dopo l'operazione di riparazione, puoi chiamare

      dbcc checkdb('MyDatabase.mdf')
      

      di nuovo per vedere se il database è corretto o meno.

      Informazioni più dettagliate sul comando dbcc checkdb sono disponibili all'indirizzo https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Se dopo aver utilizzato il metodo 1, dbcc checkdb segnala ancora errori in alcune tabelle, puoi provare SQL Server comando integrato DBCC CHECKTABLE per ripristinare queste tabelle nel database. Supponendo che il file di database corrotto sia "MyDatabase.mdf" e la tabella che desideri riparare sia "MyTable", puoi procedere come segue per ripararlo:
    1. Restart SQL Server.
    2. Non eseguire alcuna operazione.
    3. In SQL Server Management Studio, eseguire le seguenti istruzioni SQL:
      use MyDatabase.mdf Declaration @dbname varchar(255) set @dbname='MyDatabase.mdf' exec sp_dboption @dbname,'single user','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS) dbcc checktable('MyTable',REPAIR_REBUILD ) exec sp_dboption @dbname,'utente singolo','false'
      

      La dichiarazione

      dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS)
      

      può causare la perdita di alcuni dati nella tabella quando si esegue l'operazione di riparazione.

      Mentre la dichiarazione

      dbcc checktable('MyTable',REPAIR_REBUILD)
      

      NON causerà alcuna perdita di dati durante l'operazione di riparazione, ma richiede più tempo.

      Quindi, se non sei urgente, puoi prima provare a eseguire solo la seconda istruzione dbcc checktable, se tale istruzione non può aiutare a recuperare il database, puoi eseguire il primo e il secondo comando dbcc checktable.

      Dopo aver completato l'operazione di riparazione per tutte le tabelle danneggiate, puoi chiamare

      dbcc checkdb('MyDatabase.mdf')
      

      di nuovo per vedere se le tabelle nel database sono corrette o meno.

    Informazioni più dettagliate sul comando dbcc checktable sono disponibili all'indirizzo https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Se i metodi 1 e 2 non sono ancora in grado di riparare il database corrotto o le tabelle, o se questi metodi non sono in grado di recuperare i dati desiderati, è possibile utilizzare DataNumen SQL Recovery per recuperare i dati dal database MDF.