SQL Serverエラー3183はデータベースの破損、特に破損したページに関連しています。この記事では、このエラーが発生する理由とその修正方法について説明します。また、このエラーを修正するために、破損したSQL Serverデータベースのバックアップファイルを簡単に修復・復元できるSQLデータベース修復ツールについても言及します。
エラー 3183 は、SQL Server データベースをバックアップからリストアするときに発生する可能性があります。これは通常、CHECKSUM オプションを使用したデータベース・バックアップのリストア中にページの検証に失敗した場合に発生します。その後、リストア処理はキャンセルされます。このようなエラー・メッセージが表示されることがあります:
Msg 3183, Level 16, State 1, Line 1
RESTORE は、バックアップ・セットからの読み取り時に、
データベース "stellardb"
のページ (10:10) でエラーを
検出しました。
上のメッセージでは、3183がエラーIDです。レベル16は致命的なエラー、ステータス1はページの読み取り中にエラーが発生したことを意味します。行目はエラーが発生した行です。
SQL Serverでエラー3183が発生するのはなぜですか?
このエラーの最も可能性の高い原因は、SQL Serverデータベース・ページが破損していることです。これには、ハードウェア・エラー、ソフトウェアの問題、オペレーティング・システムの問題など、さまざまな原因が考えられます。たとえば、ドライブのセクタが破損している場合、ページも破損します。電源障害もハードウェアを損傷し、SQL Server データベースのページを破損する可能性があります。オペレーティングシステムに障害が発生した場合も、データベースのページが破損する可能性があります。ウイルスやマルウェアもデータベースのバックアップに影響を与えます。
SQL Server のエラー 3183 を修正するソリューション
SQL Server エラー 3183 を修正し、データベースを復元するには、以下の解決策に従ってください。
ただ し 、 まずデー タ ベース のバ ッ ク ア ッ プが破損 し てい る か ど う かを確認 し て く だ さ い。これを行うには、T-SQLでVERIFYONLYオプションを指定してRESTOREコマンドを使用します(以下の例を参照してください)。
RESTORE VERIFYONLY FROM DISK = 'C:◆PathTo◆バックアップ.bak';コピーコード
このコマンドを使用して、バックアップ・ファイルの整合性をチェックできます。
解決策1:CONTINUE_AFTER_ERRORオプションを使用します。
CONTINUE_AFTER_ERRORオプションを使用してデータベースの復元を試みることができます。このオプションはデータベースをリストアしますが、一部のデータが失われる可能性があります。このオプションはエラーを無視してデータベースのリストアを続行しようとします。
以下の例は、CONTINUE_AFTER_ERRORオプションを使用してデータベースをリストアする方法を示しています。
RESTORE DATABASE [stellar]FROM DISK = N'e: \Backupstellar.bak'
WITH FILE = 2,
NOUNLOAD,
STATS = 5, CONTINUE_AFTER_ERROR;コピーコード
リストア後、DBCC CHECKDBコマンドを実行してデータベースの状態を確認できます(以下の例を参照してください)。
DBCC CHECKDB('stellar') WITH NO_INFOMSGS;コピーコード
解決策2:SQLデータベースのバックアップを修復する専門ソフトウェアを使用します。
CONTINUE_AFTER_ERROR オプションを指定した RESTORE DATABASE コマンドが失敗した場合、またはデータ損失を避けるために、サードパーティの SQL データベース修復ソフトウェアを使用して、破損したバックアップ ファイルを修復することができます。Stellar Repair for MS SQL - Technicianはそのようなサードパーティ製ソフトウェアの1つで、あらゆるSQL Serverバージョンの破損したデータベースバックアップファイルを修復・復元することができます。バックアップファイルを選択するだけで、ソフトウェアはそれを修復します。このソフトウェアがどのように機能するか見てみましょう。
まず、Stellar Repair for MS SQL - Technician ソフトウェアをインストールします。
次に、ソフトウェアを起動し、MS SQLバックアップから抽出オプションを選択します。
バックアップファイルの場所がわかっている場合は、[参照] ボタンをクリックして .bak ファイルを選択します。バックアップファイルの場所がわからない場合は、[検索] ボタンを使用してバックアップファイルを検索できます。
バックアップファイルを選択したら、スキャンボタンを押します。
2つのスキャンオプションが表示されます:
- 標準スキャンはデフォルトのオプションであり、推奨オプションです。
- アドバンストスキャンは低速ですが、標準スキャンが失敗した場合に使用されます。
バックアップを選択し、[次へ]を押します。
プレビューウィンドウですべてのデータベースオブジェクトを見ることができます。
保存アイコンを押します。
新規データベース、ライブデータベース、またはExcel、CSV、HTMLなどの他の形式でデータを保存できます。
エラー3183を回避するにはどうすればよいですか?
SQL Server のエラー 3183 を回避するためのベストプラクティスをいくつか紹介します。
- アンチウイルスおよびアンチマルウェアソフトウェアをインストールしてください。
- 停電を避けるため、必ずUPSを使用してください。
- バックアップを定期的にテストしてください。
- バックアップはクラウドか、少なくとも別の物理的な場所に保管してください。
- ハードウェアの状態を監視します。
- データベースのステータスを監視します。
結論
SQL Server エラー 3183 は通常、破損したページが原因で発生します。データベースのバックアップをリストアするときに発生するこの SQL Server エラーを解決するには、上記の解決策に従うことができます。CONTINUE_AFTER_ERROR オプシ ョ ン を使用 し て破損 し たバ ッ ク ア ッ プの復元を試み る こ と がで き ます。CONTINUE_AFTER_ERROR オプションが失敗した場合は、Stellar Repair for MS SQL を使用することができます。このソフトウェアは、破損したバックアップを修復し、すべてのデータを復元します。