Recuperar un corrupto SQL Server Base de datos MDF

Cuando SQL Server La base de datos MDF está dañada, puede utilizar los siguientes métodos para recuperar los datos que contiene y reducir la pérdida:

Nota: Antes de realizar cualquier operación de recuperación de datos, primero haga una copia de seguridad de sus archivos de base de datos MDF y NDF corruptos.

  1. Primero que nada, puedes intentar SQL Server comando incorporado DBCC COMPROBARDB para recuperar su base de datos. Suponiendo que el archivo de base de datos dañado es 'MyDatabase.mdf', puede hacer lo siguiente para recuperar los datos que contiene:
    1. Restart SQL Server.
    2. No realice ninguna operación.
    3. In SQL Server Management Studio, ejecute las siguientes sentencias SQL:
      use master declare @databasename varchar (255) set @ databasename = 'MyDatabase.mdf' exec sp_dboption @databasename, N'single ', N'true' - Establezca la base de datos de destino en modo de usuario único dbcc checkdb (@ databasename, REPAIR_ALLOW_DATA_LOSS ) dbcc checkdb (@ databasename, REPAIR_REBUILD) exec sp_dboption @databasename, N'single ', N'false' - Vuelve a establecer la base de datos de destino en modo multiusuario
      

      La declaración

      dbcc checkdb (@ nombre de la base de datos, REPAIR_ALLOW_DATA_LOSS)
      

      puede causar la pérdida de algunos datos en su base de datos al realizar la operación de reparación.

      Mientras que la declaración

      dbcc checkdb (@ nombre de la base de datos, REPAIR_REBUILD)
      

      NO causará ninguna pérdida de datos durante la operación de reparación, pero requiere más tiempo.

      Entonces, si no tiene urgencia, primero puede intentar realizar la segunda instrucción dbcc checkdb solamente, si esa instrucción no puede ayudar a recuperar la base de datos, entonces puede ejecutar el primer y segundo comando dbcc checkdb.

      Después de la operación de reparación, puede llamar

      dbcc checkdb ('MyDatabase.mdf')
      

      nuevamente para ver si la base de datos está arreglada o no.

      Puede encontrar información más detallada sobre el comando dbcc checkdb en https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. Si después de usar el método 1, dbcc checkdb aún informa errores en algunas tablas, puede intentar SQL Server comando incorporado DBCC CHECKTABLE para recuperar estas tablas en su base de datos. Suponiendo que el archivo de base de datos dañado es 'MyDatabase.mdf' y la tabla que desea reparar es 'MyTable', puede hacer lo siguiente para repararlo:
    1. Restart SQL Server.
    2. No realice ninguna operación.
    3. In SQL Server Management Studio, ejecute las siguientes sentencias SQL:
      use MyDatabase.mdf declare @dbname varchar (255) set @ dbname = 'MyDatabase.mdf' exec sp_dboption @ dbname, 'single user', 'true' dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS) dbcc checktable ('MyTable', REILDIR_REBUBU ) exec sp_dboption @ dbname, 'usuario único', 'falso'
      

      La declaración

      dbcc checktable ('MyTable', REPAIR_ALLOW_DATA_LOSS)
      

      puede causar la pérdida de algunos datos en su tabla al realizar la operación de reparación.

      Mientras que la declaración

      dbcc checktable ('MyTable', REPAIR_REBUILD)
      

      NO causará ninguna pérdida de datos durante la operación de reparación, pero requiere más tiempo.

      Entonces, si no tiene urgencia, primero puede intentar realizar la segunda instrucción dbcc checktable solamente, si esa instrucción no puede ayudar a recuperar la base de datos, entonces puede ejecutar el primer y segundo comando dbcc checktable.

      Después de completar la operación de reparación de todas las tablas corruptas, puede llamar

      dbcc checkdb ('MyDatabase.mdf')
      

      nuevamente para ver si las tablas en la base de datos son arregladas o no.

    Puede encontrar información más detallada sobre el comando dbcc checktable en https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. Si los métodos 1 y 2 aún no pueden reparar la base de datos corrupta o las tablas, o si estos métodos no pueden recuperar los datos que desea, puede usar DataNumen SQL Recovery para recuperar los datos de su base de datos MDF.