恢复损坏 SQL Server 密度板数据库

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

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

  1. 首先,您可以尝试 SQL Server 内置命令 DBCC 检查数据库 恢复您的数据库。 假设损坏的数据库文件是“MyDatabase.mdf”,那么您可以按照以下步骤恢复其中的数据:
    1. 住宅tart SQL Server.
    2. 不执行任何操作。
    3. In SQL Server Management Studio,执行如下SQL语句:
      use 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. 如果使用方法一后dbcc checkdb仍然报错部分表,可以试试 SQL Server 内置命令 DBCC CHECKTABLE 可恢复数据库中的这些表。 假设损坏的数据库文件是“MyDatabase.mdf”,而你要修复的表是“MyTable”,那么你可以按如下方式修复它:
    1. 住宅tart SQL Server.
    2. 不执行任何操作。
    3. In SQL Server Management Studio,执行如下SQL语句:
      使用 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',REPAIR_REBUILD ) exec sp_dboption @dbname,'单用户','false'
      

      该声明

      dbcc 检查表('MyTable',REPAIR_ALLOW_DATA_LOSS)
      

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

      虽然声明

      dbcc 检查表('MyTable',REPAIR_REBUILD)
      

      不会在修复操作期间造成任何数据丢失,但更耗时。

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

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

      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. 如果方法一和方法二仍然不能修复损坏的数据库或表,或者这些方法不能恢复你想要的数据,那么你可以使用 DataNumen SQL Recovery 从 MDF 数据库中恢复数据。