【SQL Server】データベースが破損したのでトランザクションログを再作成した時のメモ

Microsoft Windows
スポンサーリンク

以前に Microsoft SQL Server のトランザクションログが破損したことによりデータベースの挙動がおかしくなった事があり、その際に行った復旧方法を残しておきたいと思います。

※トランザクションログの再作成自体は緊急手段となりますので、実施する際は十分に確認を行った上で行うことをおすすめします。

スポンサーリンク

トランザクションログの再作成

トランザクションログの再作成は、Microsoft SQL Server Management Studio 管理コンソールからクエリ実行する方法になります。

手順に進む前に対象データベース名を確認します。

 

手順1:データベースを緊急モードに変更する(SET EMERGENCY)

ALTER DATABASE <データベース名> SET EMERGENCY」にて、トランザクションの再作成を行う対象のデータベース名を指定して、緊急モードへのステータス変更を行います。

クエリ例

use master
go
ALTER DATABASE <データベース名> SET EMERGENCY
go

 

手順2:データベースの破損箇所を確認する(CHECKDB)

DBCC CHECKDB (‘<データベース名>’)」にて、データベースの破損箇所の確認を行います。

破損箇所を確認した上でデータロスを許容する修正オプションを指定するため、他に破損している箇所がある場合は失われる可能性があります。

クエリ例

DBCC CHECKDB ('<データベース名>')

 

手順3:トランザクションログを再作成する(CHECKDB repair)

DBCC CHECKDB (‘<データベース名>’,’repair_allow_data_loss’)」にて、対象データベースのトランザクション ログ ファイルの再作成を行います。

クエリ例

use master
go
DBCC CHECKDB ('<データベース名>','repair_allow_data_loss')
go

 

手順4:データベースの整合性を確認する(CHECKDB)

DBCC CHECKDB (‘<データベース名>’)」にて、リペア後のデータベースの整合性チェックを実施します。リペア後のデータで破損している箇所がないか確認します。

クエリ例

DBCC CHECKDB ('<データベース名>')

※DBCC CheckDB の結果に問題がなければ、緊急モードの解除に進みます。

手順5:データベースを緊急モードから解除する(SET ONLINE)

以下のクエリを実行し、緊急モードを解除します。

クエリ例

use master
go
ALTER DATABASE <データベース名> SET MULTI_USER
go
ALTER DATABASE <データベース名> SET ONLINE
go

以上でトランザクションログの再作成の操作は完了となります。

タイトルとURLをコピーしました