SQL Server では、ページはデータを格納する基本単位であり、エクステントはページを効率的に管理するための基本単位です。エクステントは、物理的に接続された 8 つのページの組み合わせです。SQL Server では、割り当てエクステントを記録するために使用される割り当てマップには、グローバル割り当てマップ (GAM) と共有グローバル割り当てマップ (SGAM) の 2 種類があります。もう1つのページ、インデックス・アロケーション・マップ(IAM)があり、これはアロケーション・ユニットによって使用されるSQL Serverデータベース・ファイルの4GB部分のエクステントを記録します。これらの SQL データベース・ページがさまざまな理由で破損し、破損したデータベースの修復が必要になることがあります。この記事では、SQL データベースの破損 – SQL Server の GAM、SGAM、および IAM ページの問題 – を診断して修復する方法について説明します。
GAM、SGAM、IAMページとは何ですか?
グローバル・アロケーション・ページ(GAM)は、データベース内のアロケーション・エクステントを管理する役割を担っています。必要に応じて、空きエクステントを特定するのに役立ちます。
共有アロケーションマップ (SGAM) ページは、粒度の細かいマップのようなものです。データベース内の特定のファイルグループへのエクステントの割り当てを管理します。
インデックス・アロケーション・マップ(IAM)ページは特別な内部ページで、 データ格納用のレジスタのように機能します。データベースファイル内のデータページの位置を追跡します。
GAM、SGAM、IAMページの障害をどのように診断しますか?
クエリーを実行すると、このようなエラーメッセージが表示されることがあります:
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データベースのGAM、SGAM、IAMページの破損を修正する方法は?
ここでは、GAM、SGAM、IAMページのエラーやSQLデータベースの破損を修正するためのソリューションを紹介します。
バックアップからデータベースを復元
バ ッ ク ア ッ プ コ ピーがあ る 場合は、 それを使用 し てデー タ を復元で き ます。ここでは、SQL Server Management Studio(SSMS)を使用してデータベースのバックアップを復元する手順を説明します:
- SQL Server Management Studio(SSMS)で、Object Explorerを開き、Databasesを右クリックします。
- 次に、データベースの復元オプションを選択します。
- GeneralページでDeviceを選択し、Browseボタンを押してバックアップを選択し、OKを押します。
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 でデータベースを修復するには、以下の手順に従ってください:
注:修復プロセスを開始する前に、データベースをオフラインにしてください。
- 公式サイトからダウンロードしてください。
- ソフトウェアをインストールし、起動します。
- 参照]をクリックしてデータベースファイルを選択します(データファイルの保存場所がわからない場合は、[検索]ボタンを使用できます)。
- ファイルを選択したら、「修復」ボタンをクリックします。
- データの修復が完了したら、新しいデータベースに保存したり、CSV、HTML、Excelなどの他の形式で保存することができます。
GAM、SGAM、IAMサイトの破損を防ぐためのベストプラクティス
SQL Serverデータベースのページへのダメージを防ぐために役立つヒントをいくつかご紹介します:
- ハードウェア、特にドライブが正常に動作しているか確認してください。ハードディスク・ドライブが古かったり、エラーがある場合は交換してください。可能であれば、SQL Serverのデータ用にミラーRAIDを作成します。
- ウイルスやマルウェアの攻撃を避けましょう。アンチウイルス、アンチスパムソフトウェアを必ずインストールしてください。
- 最高のファイアウォールとネットワークセグメンテーションでネットワークを保護し、データを暗号化します。必要に応じて、特定のVPNネットワークを作成します。
- オペレーティングシステムとソフトウェアを最新のアップデートに更新してください。
結論
データベース内の GAM、SGAM、または IAM ページが破損している場合は、最後のバックアップから データベースを復元するのが最も簡単です。バックアップが古いか機能しない場合は、DBCC CHECKDB コマンドでデータベースの修復を試みます。状況によっては、DBCC CHECKDBコマンドは機能しません。この場合、Stellar Repair for MS SQL を使用することができます。このソフトウェアは、破損したデータベースを簡単に修復し、すべてのオブジェクトを完全な状態で復元することができます。
Was this article helpful?