データベースの破損を修復します:SQL ServerのGAM、SGAM、IAM

Summary: この記事では、GAM、SGAM、および IAM ページを使用して SQL Server の重大なデータベース破損を診断および修復する方法を学びます。一般的なエラーについて学び、診断、修復、予防の戦略や、データベースの回復やサードパーティの修復ソフトウェアなどのソリューションについて理解を深めます。また、将来の損傷を防ぐためのヒントも得られます。

SQL Server では、ページはデータを格納する基本単位であり、エクステントはページを効率的に管理するための基本単位です。エクステントは、物理的に接続された 8 つのページの組み合わせです。SQL Server では、割り当てエクステントを記録するために使用される割り当てマップには、グローバル割り当てマップ (GAM) と共有グローバル割り当てマップ (SGAM) の 2 種類があります。もう1つのページ、インデックス・アロケーション・マップ(IAM)があり、これはアロケーション・ユニットによって使用されるSQL Serverデータベース・ファイルの4GB部分のエクステントを記録します。これらの SQL データベース・ページがさまざまな理由で破損し、破損したデータベースの修復が必要になることがあります。この記事では、SQL データベースの破損 – SQL Server の GAM、SGAM、および IAM ページの問題 – を診断して修復する方法について説明します。 

GAMSGAMIAMページとは何ですか?

グローバル・アロケーション・ページ(GAM)は、データベース内のアロケーション・エクステントを管理する役割を担っています。必要に応じて、空きエクステントを特定するのに役立ちます。

共有アロケーションマップ (SGAM) ページは、粒度の細かいマップのようなものです。データベース内の特定のファイルグループへのエクステントの割り当てを管理します。

インデックス・アロケーション・マップ(IAM)ページは特別な内部ページで、 データ格納用のレジスタのように機能します。データベースファイル内のデータページの位置を追跡します。

GAMSGAMIAMページの障害をどのように診断しますか?

クエリーを実行すると、このようなエラーメッセージが表示されることがあります:

Msg 8905、レベル 16、ステータス 1、行 1
データベース ID 10 のエクステント(5678:1234)は GAM で割り当て済みとマークされていますが、 SGAM または IAM では割り当てられていません。

このエラーはGAMページが壊れていることを示しています。

データベース・ページのエラーを認識するもう1つの方法は、DBCC CHECKDBコマンドを使用することです(以下の例を参照してください)。

DBCC CHECKDB (stellardb)
ゴー

dbcc PAGE という文書化されていないコマンドがあります。これはMicrosoftが使用している内部コマンドです。しかし、データベースページの診断に使用することができます。以下にこのコマンドを使用するコードを示します。

DBCC PAGE (stellardb, 1, 354, WITH NOHEADER)
ゴー

ここでstellardbはデータベースの名前、1はファイル番号、354はページ番号です。

SQLデータベースのGAMSGAMIAMページの破損を修正する方法は?

ここでは、GAM、SGAM、IAMページのエラーやSQLデータベースの破損を修正するためのソリューションを紹介します。

バックアップからデータベースを復元

バ ッ ク ア ッ プ コ ピーがあ る 場合は、 それを使用 し てデー タ を復元で き ます。ここでは、SQL Server Management Studio(SSMS)を使用してデータベースのバックアップを復元する手順を説明します:

DBCC CHECKDBコマンドを使用します。

GAM、SGAM、IAM ページ・フォールトとデータベース破損を修正するには、SQL Server の DBCC CHECKDB コマンドを使用できます。以下は DBCC CHECKDB コマンドでデータベースを修復するコードです:

USEマスター;
ゴー
ALTER DATABASE stellar
single_userを設定します。
即時ロールバック
ゴー
DBCC CHECKDB('stellar',REPAIR_REBUILD)
ゴー
ALTER DATABASE stellar
multi_userを設定します;
ゴー

上記のコードはマスター・システム・データベースにアクセスし、データベースをシングル・ユーザー・モードにし、データベースを修復してマルチ・ユーザー・モードに戻します。

サードパーティのSQLデータベース修復ソフトウェアを使用

DBCC CHECKDB コマンドでデータベースを修復できない場合は、Stellar Repair for MS SQL など、サードパーティ製の SQL 修復ソフトウェアを使用できます。このソフトウェアは SQL Server データベースファイル (mdf と ndf) を簡単に修復することができます。破損したデータベースファイルからすべてのデータを復元し、新しいデータベースファイルまたは他の様々な形式で保存することができます。

Stellar Repair for MS SQL でデータベースを修復するには、以下の手順に従ってください:

注:修復プロセスを開始する前に、データベースをオフラインにしてください。

GAMSGAMIAMサイトの破損を防ぐためのベストプラクティス

SQL Serverデータベースのページへのダメージを防ぐために役立つヒントをいくつかご紹介します:

結論

データベース内の GAM、SGAM、または IAM ページが破損している場合は、最後のバックアップから データベースを復元するのが最も簡単です。バックアップが古いか機能しない場合は、DBCC CHECKDB コマンドでデータベースの修復を試みます。状況によっては、DBCC CHECKDBコマンドは機能しません。この場合、Stellar Repair for MS SQL を使用することができます。このソフトウェアは、破損したデータベースを簡単に修復し、すべてのオブジェクトを完全な状態で復元することができます。

Related Post

Exit mobile version