Exchange 2013 で CHKSGFILES API を使用してバックアップの整合性を検証する
CHKSGFILES API を使用して、Exchange 2013 の Exchange ストアのバックアップを検証する方法について説明します。
製品: Exchange Server 2013
ボリューム シャドウ コピー サービス (VSS) によって管理されるバックアップ操作中、Exchange Server 2013 では、各データベース ファイル全体を読み取り、チェックサムの整合性を確認できません。 そのため、データベースとトランザクション ログ ファイルの整合性を検証する独自のバックアップ アプリケーションが必要になることがあります。 独自のバックアップ アプリケーションでは、Exchange ライターにバックアップの完了を通知する前に、シャドウ コピー セットの物理的な整合性を確認するようにしてください。 バックアップが正常に完了すると、Exchange ストアは、最後に成功したバックアップの時刻を反映するようにバックアップしたデータベースのヘッダーを更新して、最後に成功したバックアップからロールフォワードする必要のなくなったトランザクション ログをサーバーから削除します。
バックアップ整合性を検証するための前提条件
独自のアプリケーションでバックアップの整合性を検証するには、次に示す項目にアクセスできる必要があります。
- Exchange ストアのバックアップのファイル。
- Visual Studio 2010 以降のいずれかの Visual Studio のバージョン。
- CHKSGFILES ライブラリ ファイルとヘッダー ファイル。 ライブラリとヘッダー ファイルは 、Microsoft ダウンロード センターからダウンロードできます。
バックアップの整合性の検証
次の手順では、独自のバックアップおよび復元アプリケーションで、データ整合性を検証する方法について説明しています。
バックアップの整合性を検証するには
CChkSGFiles クラスの新しいインスタンスを作成します。
CCheckSGFiles::ERRerr = CCheckSGFiles::errSuccess; ULONGiDbError = (ULONG)CCheckSGFiles::iDbInvalid; CCheckSGFiles * const pcchecksgfiles = CCheckSGFiles::New(); if ( NULL == pcchecksgfiles ) { err = CCheckSGFiles::errOutOfMemory; printf( "ERROR: Could not allocate CCheckSGFiles object.\n" ); goto HandleError; }
コードの最初の行は、エラー オブジェクトを作成し、その初期値を成功に設定し、データベースの有効性を確認するオブジェクトを作成します。 次に、 CChkSGFiles.New 関数 によって CChkSGFiles クラスの新しいインスタンスが作成されます。 新しいオブジェクトのクイック チェックは、新しいインスタンスの作成時に問題が発生したかどうかを示します。
CChkSGFiles オブジェクトを初期化します。
Call( pcchecksgfiles->ErrInit( rgwszDb, cDb, wszLogPath, wszBaseName ) );
パラメーターの詳細については、「CChkSGFiles.ErrInit 関数」を参照してください。
CChkSGFiles.ErrCheckDbHeaders 関数を使用して、データベースのヘッダーを確認することで、データベース整合性を検証します。
err = pcchecksgfiles->ErrCheckDbHeaders( &cbDbPageSize, &cDbHeaderPages, &iDbError ); if ( CCheckSGFiles::errSuccess != err ) { if ( CCheckSGFiles::iDbInvalid != iDbError ) { printf( "ERROR: Database header validation for '%S' failed with error %d (0x%x)\n", rgwszDb[ iDbError ], err, err ); } goto HandleError; }
パラメーターの詳細については、「CChkSGFiles.ErrCheckDbHeaders 関数」を参照してください。
エラーを処理し、CChkSGFiles.Delete 関数を使用してメモリから CChkSGFiles クラスを削除します。
HandleError: CCheckSGFiles::Delete( pcchecksgfiles );