破損したものを回復する SQL Server MDFデータベース

ときにあなたを SQL Server MDFデータベースが破損している場合は、次の方法を使用してデータベース内のデータを回復し、損失を減らすことができます。

注:データ復旧操作を実行する前に、まず破損したMDFおよびNDFデータベースファイルをバックアップしてください。

  1. まず第一に、あなたは試すことができます SQL Server 組み込みコマンド DBCCチェックDB データベースを回復します。 破損したデータベースファイルが「MyDatabase.mdf」であるとすると、次のようにしてその中のデータを回復できます。
    1. 解像度tart SQL Server.
    2. 操作は行わないでください。
    3. In SQL Server Management Studioで、次のSQLステートメントを実行します。
      use masterdeclare @databasename varchar(255)set @ databasename = 'MyDatabase.mdf' exec sp_dboption @ databasename、N'single '、N'true'-宛先データベースをシングルユーザーモードに設定しますdbcccheckdb(@ 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)
      

      修復操作中にデータが失われることはありませんが、時間がかかります。

      したがって、緊急でない場合は、最初にXNUMX番目のdbcc checkdbステートメントのみを実行してみてください。そのステートメントがデータベースの回復に役立たない場合は、最初とXNUMX番目のdbcccheckdbコマンドを実行できます。

      修理後、お電話ください

      dbcc checkdb( 'MyDatabase.mdf')
      

      もう一度、データベースが修正されているかどうかを確認します。

      dbcc checkdbコマンドの詳細については、次のURLを参照してください。 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 データベース内のこれらのテーブルをリカバリするための組み込みコマンドDBCCCHECKTABLE。 破損したデータベースファイルが「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、 'single user'、 'false'
      

      ステートメント

      dbcc checktable( 'MyTable'、REPAIR_ALLOW_DATA_LOSS)
      

      修復操作を実行すると、テーブル内の一部のデータが失われる可能性があります。

      声明が

      dbcc checktable( 'MyTable'、REPAIR_REBUILD)
      

      修復操作中にデータが失われることはありませんが、時間がかかります。

      したがって、緊急でない場合は、最初にXNUMX番目のdbcc checktableステートメントのみを実行してみてください。そのステートメントがデータベースの回復に役立たない場合は、XNUMX番目とXNUMX番目のdbccchecktableコマンドを実行できます。

      破損したすべてのテーブルの修復操作が完了したら、次のコマンドを実行できます。

      dbcc checkdb( 'MyDatabase.mdf')
      

      データベース内のテーブルが修正されているかどうかをもう一度確認します。

    dbcc checktableコマンドの詳細については、次のURLを参照してください。 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データベースからデータを回復します。