恢复一个损坏的SQL Server MDF数据库

当您的SQL Server MDF数据库损坏时,您可以使用以下方法恢复其中的数据,以减少损失:

注意:在执行任何数据恢复操作之前,请先备份损坏的MDF和万博ManBetX手机下载NDF数据库文件。

  1. 首先,您可以尝试SQL Server内置命令DBCC CHECKDB恢复数据库。假设损坏的数据库文件是MyDatabase。Mdf ',然后您可以执行以下操作来恢复其中的数据:
    1. 重新启动SQL Server。
    2. 请勿执行任何操作。
    3. 在SQL Server Management Studio中执行以下SQL语句:
      使用master declare @databasename varchar(255) set @databasename='MyDatabase '。mdf' exec sp_dboption @databasename, N'single', N'true'——设置目标数据库为单用户模式dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false'——设置目标数据库为多用户模式

      该声明

      dbcc checkdb (@databasename REPAIR_ALLOW_DATA_LOSS)

      在执行修复操作时,可能会导致数据库中的某些数据丢失。

      而语句

      dbcc checkdb (@databasename REPAIR_REBUILD)

      在修复操作过程中不会造成任何数据丢失,但耗时较长。

      所以如果你不是紧急的,你可以先尝试执行第二个dbcc checkdb语句,如果该语句不能帮助恢复数据库,那么你可以执行第一个和第二个dbcc checkdb命令。

      修复操作完成后,您可以拨打电话

      dbcc checkdb(“MyDatabase.mdf”)

      再次查看数据库是否固定。

      关于dbcc checkdb命令的更多详细信息可以在https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checkdb-transact-sql?view=sql-server-ver15

  2. 如果在使用方法1之后,dbcc checkdb仍然报告一些表错误,您可以尝试SQL Server内置命令dbcc CHECKTABLE来恢复数据库中的这些表。假设损坏的数据库文件是MyDatabase。mdf ',你要修复的表是' MyTable ',然后你可以按照以下步骤修复它:
    1. 重新启动SQL Server。
    2. 请勿执行任何操作。
    3. 在SQL Server Management Studio中执行以下SQL语句:
      使用MyDatabase。mdf声明@dbname varchar(255) set @dbname='MyDatabase。mdf' exec sp_dboption @dbname,'单用户','true' dbcc checktable('MyTable',REPAIR_ALLOW_DATA_LOSS) dbcc checktable('MyTable',REPAIR_REBUILD) exec sp_dboption @dbname,'单用户','false'

      该声明

      dbcc checktable (MyTable, REPAIR_ALLOW_DATA_LOSS)

      在执行修复操作时,可能会导致表中的某些数据丢失。

      而语句

      dbcc checktable (MyTable, REPAIR_REBUILD)

      在修复操作过程中不会造成任何数据丢失,但耗时较长。

      所以如果你不是紧急的,你可以先尝试执行第二个dbcc检查表语句,如果该语句不能帮助恢复数据库,那么你可以执行第一个和第二个dbcc检查表命令。

      在完成所有损坏表的修复操作后,可以调用

      dbcc checkdb(“MyDatabase.mdf”)

      再次检查数据库中的表是否固定。

    关于dbcc checktable命令的更多详细信息可以在https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-checktable-transact-sql?view=sql-server-ver15

  3. 如果方法1和2仍然不能修复损坏的数据库或表,或者如果这些方法不能恢复您想要的数据,那么您可以使用DataNumen SQL恢复从MDF数据库中恢复数据。