DBCCコマンドを利用してデータベースの論理性確認と修復をする手順を紹介します。
必要に応じて、データベースを緊急モードまたは、シングルユーザーモード にします。
SQL Server Management Studioなどで、以下のSQLコマンドを実行します。
USE master
GO
ALTER DATABASE 対象データベース SET EMERGENCY
GO
USE master
GO
ALTER DATABASE 対象データベース SET SINGLE_USER
GO
USE master
GO
ALTER DATABASE iPentecSandBox SET EMERGENCY
GO
コマンドが成功すると、データベースの状態が「緊急」になります。
一連の作業前にデータベースのバックアップをとることをお勧めします。
バックアップの手順はこちらの記事を参照してください。または、SQL Serverのデータディレクトリにあるmdf,ldfファイルを直接バックアップする方法も利用できます。
下記のSQLコマンドを実行し、データベースをチェックします。
DBCC CHECKDB(対象データベース)
GO
DBCC CHECKDB(iPentecSandBox)
GO
チェックが実行され、チェック結果のメッセージが表示されます。
CHECKDB により、データベース 'iPentecSandBox' に 0 個のアロケーション エラーと 0 個の一貫性エラーが見つかりました。
DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。
CHECKDB により、データベース '(データベース名)' に 0 個のアロケーション エラーと 2 個の一貫性エラーが見つかりました。
repair_rebuild は DBCC CHECKDB ((データベース名)) で見つかったエラーの最小修復レベルです。
DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。
CHECKDB により、データベース '(データベース名)' に 0 個のアロケーション エラーと 18 個の一貫性エラーが見つかりました。
repair_allow_data_loss は DBCC CHECKDB ((データベース名)) で見つかったエラーの最小修復レベルです。
DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。
エラーが発生している場合はデータベースを修復します。
下記SQLを実行してシングルユーザーモードに変更します。
ALTER DATABASE 対象データベース SET SINGLE_USER
GO
下記SQLを実行してデータベースの修復をします。
DBCC CHECKDB('対象データベース','REPAIR_REBUILD')
GO
下記SQLを実行してシングルユーザーモードに変更します。
ALTER DATABASE 対象データベース SET SINGLE_USER
GO
下記SQLを実行してデータベースの修復をします。
DBCC CHECKDB('対象データベース','REPAIR_ALLOW_DATA_LOSS')
GO
修復処理が開始されます。修復の進行状況のメッセージが表示されます。修復が完了すると以下のメッセージ(一例)が表示されます。
CHECKDB により、データベース '(データベース名)' に 0 個のアロケーション エラーと 17 個の一貫性エラーが見つかりました。
CHECKDB により、データベース '(データベース名)' で 0 個のアロケーション エラーと 14 個の一貫性エラーが解決されました。
repair_allow_data_loss は DBCC CHECKDB ((データベース名), repair_allow_data_loss) で見つかったエラーの最小修復レベルです。
DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。
再度下記のCHECKDBのSQLコマンドを実行し、データベースをチェックします。
DBCC CHECKDB(対象データベース)
GO
CHECKDB により、データベース 'iPentecSandBox' に 0 個のアロケーション エラーと 0 個の一貫性エラーが見つかりました。
DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。
のメッセージが表示されることを確認します。
下記のコマンドを実行し、テーブル、データベースの整合性をチェックします。
USE [対象データベース]
GO
DBCC CHECKCONSTRAINTS
GO
DBCC の実行が完了しました。DBCC がエラー メッセージを出力した場合は、システム管理者に相談してください。
下記SQLコマンドを実行し、データベースをオンラインにします。
ALTER DATABASE [対象データベース] SET ONLINE
下記SQLコマンドを実行し、データベースのシングルユーザーモードを解除します。
ALTER DATABASE [対象データベース] SET MULTI_USER
ALTER DATABASE [iPentecSandBox] SET ONLINE
GO
ALTER DATABASE [iPentecSandBox] SET MULTI_USER
GO
コマンドが成功すると、データベースが通常のオンライン状態になります。
データベースの修復を実行した場合、復旧モデルが「単純復旧モデル」に変更されます。
通常データベースを新規で作成した場合デフォルトでは「完全復旧モデル」になるため、データベース修復後に「完全復旧モデル」に戻しておく必要があります。
下記のコマンドを実行して「完全復旧モデル」に変更します。
ALTER DATABASE [対象データベース] SET RECOVERY FULL
ALTER DATABASE [iPentecSandBox] SET RECOVERY FULL
SQL Server Management Studio のデータベースのプロパティから復旧モードを変更する手順もあります。詳しくはこちらの記事を参照してください。