ときにあなたを SQL Server MDFデータベースが破損している場合は、次の方法を使用してデータベース内のデータを回復し、損失を減らすことができます。
注:データ復旧操作を実行する前に、まず破損したMDFおよびNDFデータベースファイルをバックアップしてください。
- まず第一に、あなたは試すことができます SQL Server 組み込みコマンド DBCCチェックDB データベースを回復します。 破損したデータベースファイルが「MyDatabase.mdf」であるとすると、次のようにしてその中のデータを回復できます。
- 解像度tart SQL Server.
- 操作は行わないでください。
- 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
- 方法1を使用した後でも、dbcc checkdbが一部のテーブルでエラーを報告する場合は、試してみてください。 SQL Server データベース内のこれらのテーブルをリカバリするための組み込みコマンドDBCCCHECKTABLE。 破損したデータベースファイルが「MyDatabase.mdf」であり、修復するテーブルが「MyTable」であるとすると、次のようにして修復できます。
- 解像度tart SQL Server.
- 操作は行わないでください。
- 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
- それでも方法1と2で破損したデータベースまたはテーブルを修正できない場合、またはこれらの方法で必要なデータを回復できない場合は、次を使用できます。 DataNumen SQL Recovery MDFデータベースからデータを回復します。