EssRestoreDatabase

指定したバックアップ・アーカイブ・ファイルからデータベースを復元します。

構文

            ESS_FUNC_M EssRestoreDatabase (hCtx, AppName, DbName, BackupFileName, bForceDiffName, Count, ReplaceVol);
         
パラメータデータ型説明

hCtx

ESS_HCTX_T

ログイン・コンテキスト。

AppName

ESS_STR_T

アプリケーション名。

注:

データベース・レベルでのみ動作します。AppNameパラメータはアプリケーションを指定し、存在するデータベースにアクセスできるようにします。

DbName

ESS_STR_T

データベース名。

BackupFileName

ESS_STR_T

アーカイブ・データの読込み元となるバックアップ・ファイルのフル・パス。次の例のようにフル・パスを指定します:

                  c:\hyperion\Test.arc
               

bForceDiffName

ESS_BOOL_T

復元には別のアプリケーション名とデータベース名を使用します。

  • ESS_TRUE - 復元に別のアプリケーション名とデータベース名のいずれか、またはその両方を強制的に使用します。

    ESS_TRUEを使用して、アプリケーション名とデータベース名がバックアップのものと同じ場合は、ESS_FALSEと同じ結果になります

  • ESS_FALSE - バックアップ・ファイルに保管されているアプリケーション名とデータベース名が使用されます。バックアップ・ファイル内の名前が復元先のものと同じであることが確認されます。

Count

ESS_USHORT_T

オプション。

復元するディスク・ボリューム置換構造体の数。

ReplaceVol

ESS_PDISKVOLUME_REPLACE_T

オプション。

ディスク・ボリューム置換入力構造体。

戻り値

戻り値:

アクセス

呼出し元は、データベースへの管理者アクセス権を持っている必要があります。

         void RestoreDB()
{
	ESS_FUNC_M		sts = ESS_STS_NOERR;
	ESS_STR_T			AppName = "Backup";
	ESS_STR_T			DbName = "Basic";
	ESS_STR_T			BackupFileName = 
					"F:\\testArea\\ArchiveAndRestore\\TempBackup.arc";
	ESS_STR_T			optionsFileName = "";
	ESS_BOOL_T		bOverWrite;
	ESS_BOOL_T		bForceDiffName;
	ESS_USHORT_T		count;
	ESS_PDISKVOLUME_REPLACE_T	replaceVol;

	printf("\nArchive DB:\n");
	bOverWrite = ESS_TRUE;
	sts = EssArchiveDatabase(hCtx, AppName, DbName, 
											BackupFileName, optionsFileName, 
											bOverWrite)
	printf("EssArchiveDatabase sts: %ld\r\n",sts);

	sts = EssUnloadApplication(hCtx, AppName);
	printf("\nEssUnloadApplication sts: %ld\r\n",sts);

	printf("\nCase with no volume replacement:\n");
	bForceDiffName = ESS_FALSE;
	count = 0;
	replaceVol = ESS_NULL;
	sts = 
         EssRestoreDatabase (hCtx, AppName, DbName, 
												BackupFileName, bForceDiffName, 
												count, replaceVol);

         
	printf("EssRestoreDatabase sts: %ld\r\n",sts);

	printf("\nCase with a replacement volume (index and page files to a different volume):\n");
	bForceDiffName = ESS_FALSE;
	count = 1;
	if (count)
	{
		sts = EssAlloc(hInst, count * sizeof(ESS_DISKVOLUME_REPLACE_T), 
									(ESS_PPVOID_T)&replaceVol);
		memset(replaceVol, 0, count * sizeof(ESS_DISKVOLUME_REPLACE_T));
	}
	strcpy(replaceVol->szPartition_Src, "C");
	strcpy(replaceVol->szPartition_Dest, "F");

	sts = EssUnloadApplication(hCtx, AppName);
	printf("\nEssUnloadApplication sts: %ld\r\n",sts);

	sts = 
         EssRestoreDatabase (hCtx, AppName, DbName, 
												BackupFileName, bForceDiffName, 
												count, replaceVol);

         
	printf("EssRestoreDatabase sts: %ld\r\n",sts);

	if (replaceVol)
   		EssFree(hInst, replaceVol);
}
      

関連トピック

  • EssArchiveDatabase