破損したSQL Serverのトランザクションログファイルを修復する

Tioka |カテゴリ:データ復旧| 2024年09月30日に更新

概要:

SQL Serverのトランザクションログファイル(.ldfファイル)が破損する場合、予想せぬシステムの終了、ハードディスクの問題など、たくさんのエラーが発生します。このような場合になってしまったら、本文で掲載している方法を参照して、SQL Serverのトランザクションを修復することを試してください。もし依然として失敗して、MDFファイルにアクセスできない場合は、EaseUS MS SQL Recoveryを使って、MDF中のデータを読み込み、または、エクスポートすることで、SQLを正常動作の状態に戻しましょう。

「SQL Serverのログファイルが破損したら、どう修復するの?」

今朝、SQLのデータベースを開こうとした場合、「不明な原因によってトランザクションログファイルが破損しました」という提示メッセージが表示されました。SQL Serverを再起動しても、この問題が解決されませんでした。現在、データベースにアクセスすることができなくなり、中のコンテンツをも読み込めません。新米DBAですが、役に立つ対処法が分かっていません。誰かが破損のログファイルを修復する方法を教えてくれませんか?

トランザクションログファイルは、ログデータベースファイル(.ldfファイル)として知られていることが多いです。クラッシュやハードウェア故障があったとしてもデータベース管理システムのACID特性を保障するための操作履歴を指します。データベースが起動後、整合性のない状態であるか、正常に終了されていないことを検知すると、データベース管理システムはトランザクションログを読み取り、原子性と永続性を保証する操作を行います。トランザクションログファイルは、MDFとNDFファイルと同じようにデータベースの主要部分として、SQL Serverの動作に大きな影響を与えています。もし、トランザクションログファイルに破損がある場合、SQL serverが正確に動作できない可能性があります。

それでは、本文では、SQL Serverのトランザクションログファイルが破損する場合、その修復方法を皆さんに紹介します。

SQL Serverのログファイルが破損する原因

様々な原因によって、SQL Serverのログファイルが破損する可能性があります。下記はよく見られる原因を紹介します。

  • ハードドライブの問題:データベースファイル及ぼコンポーネントが破損するハードドライブは、何かダメージを受ける場合
  • ログファイルが最大容量を超えている:もしログファイルの容量がその最大容量を超えている場合、破損を含む一連の問題が発生する
  • 不意のシステムシャットダウン:SQL Serverが正常に終了しないことはログファイルの破損を引き起こしやすい
  • ウィルスの攻撃
  • ......

SQLログファイルの破損を修復するソリューション

上記の内容からSQLログファイルが破損する原因を理解する上、ログファイルの修復を試してみましょう。

  • 1. データベース(MDFファイル)のフルバックアップを作成します。
  • 2. SQL Server Enterprise Managerを立ち上げ、"suspect"データベースを削除します。もし削除に失敗した場合、serverを再起動してもう一度試してください。
  • 3. SQL Server Enterprise Managerで名前が同じなデータベースを新しく作成します。新しく作成したデータベースと元データベースの名前とデータを一致にすべきです。
  • 4. データベースServerを分離します。
  • 5. 新しく作成したデータベースのtest_log.ldfを削除し、生成された復元必要のあるtest_data.mdfファイルをmdfファイルで上書きします。
  • 6. SQL serverを起動します。こうすると、 “test”データベースが"suspect"モードに入るため、 データベースへ何の操作もできなくなります。
  • 7.下記のSQLシンタックスを実行:

use master
go 
sp_configure 'allow updates',1
reconfigure with override
go 
update sysdatabases set status=-32768 where dbid=DB_ID('dbname')
dbcc rebuild_log('dbname','d:\zc_post_log.ldf')
dbcc checkdb('dbname')
sp_dboption 'dbname','dbo use only','false'

破損したトランザクションログファイルからMDFを復元する

上記の手動方法に従って、破損したトランザクションログファイルを修復できない場合でも、MDF復元&修復ソフトで SQLデータベースにアクセスすることが可能です。EaseUS MS SQL Recoveryは強力のデータベース修復ソフトとして、MDFファイルからデータを復元し、SQLを正常動作な状態に戻すことが可能です。このソフトは主に下記のサービスを提供しています:

  • 破損したデータベースファイルを修復します(MDF/NDF ファイル)
  • SQL serverで削除済みのレコードを復元します。
  • 損失してしまったデータベースのコンポーネントのリカバリーが可能です。(テーブル・インデックス・トリガー・キー・ビュー・ストアド プロシージャ・ファンクションなど)
  • SQLデータベースをCSV、HTML、XLS、MDFファイルにエクスポートできます。

それでは、このSQL Server修復ソフトをダウンロードして、破損したトランザクションログファイルを修復しましょう。

ステップ1.MS SQL Server serviceを中止

Windows + Rを同時に押して、「ファイルを指定して実行」を開きます。
services.msc」を入力してエンターキーを押してサービスを開きます。
SQL Server」項目を見つけ、右クリックして「停止」をクリックします。

ステップ2.破損したデータベースファイルを選択します。

EaseUS MS SQL Recoveryを立ち上げ > 「..」ボタンまたは「検索」をクリックすることで破損のデータベースファイルを選択

ステップ3.破損したデータベースファイルを修復

データベースファイルを選択した後、「スキャン」をクリックしてデータベースを分析し、「修復」ボタンをクリックすることで修復プロセスを開始させます。

ステップ4.修復したデータベースファイルをプレビュー&保存

このソフトはすべての復元可能なアイテムを表示します。(アイテムは左のパネルで表示する)
復元したいアイテムを選択して、直接にデータベースにエクスポートするか、SQLスクリプトとしてエクスポートするかを選択して、「OK」ボタンをクリックします。

ご案内:復元してきたアイテムをMDF形式に保存することに失敗する場合 CSV、HTML、XLSファイルに保存してください。

また、破損したSQL Serverのトランザクションログファイルを修復する方法及びEaseUS MS SQL Recoveryについて何かご不明なところがあれば、日本語技術サポートセンター(support@easeus.com)までお問い合わせてください。