恢復腐敗 SQL Server MDF數據庫

當你 SQL Server MDF數據庫已損壞,可以使用以下方法恢復其中的數據,以減少丟失:

注意:在執行任何數據恢復操作之前,請先備份損壞的MDF和NDF數據庫文件。

  1. 首先,您可以嘗試 SQL Server 內置命令 DBCC 檢查數據庫 恢復您的數據庫。 假設損壞的數據庫文件是“ MyDatabase.mdf”,則可以執行以下操作來恢復其中的數據:
    1. 住宅tart SQL Server.
    2. 不要執行任何操作。
    3. In SQL Server 在Management Studio中,執行以下SQL語句:
      使用master聲明@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(@數據庫名稱,REPAIR_ALLOW_DATA_LOSS)
      

      執行修復操作時,可能會導致數據庫中某些數據丟失。

      雖然聲明

      dbcc checkdb(@數據庫名稱,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. 住宅tart SQL Server.
    2. 不要執行任何操作。
    3. In SQL Server 在Management Studio中,執行以下SQL語句:
      使用MyDatabase.mdf聲明@dbname varchar(255)設置@ 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 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. 如果方法1和2仍然無法修復損壞的數據庫或表,或者如果這些方法無法恢復所需的數據,則可以使用 DataNumen SQL Recovery 從您的MDF數據庫中恢復數據。