EssListTransactions

クライアント・バッファまたはカンマで区切られたファイルにトランザクション・メッセージが戻されます。カンマで区切られたファイルは、リレーショナル・データベースにエクスポートして、サードパーティ・ツールで処理できます。

構文

            ESS_FUNC_M EssListTransactions(hCtx, TimeSrc, InpTime, 
			ListOption, FileName, pCount, ppResults);

         
パラメータデータ型説明

hCtx

ESS_HCTX_T

このAPIを呼び出す前に、ログイン・コンテキストをアクティブに設定する必要があります。

TimeSrc

ESS_USHORT_T

トランザクションの表示開始時刻をどこで入手するのかを指定するオプション。

InpTime

ESS_TIME32_T

TimeSrcがESS_TRLOG_TIMESPECIFIEDの場合は、時刻を入力します。時刻は1970年1月1日以降に経過した秒数をULONG値で示します。

ListOption

ESS_USHORT_T

出力先を指定するオプション。リスト・オプション定数(C)を参照してください

FileName

ESS_STR_T

ListOptionがいずれかのLIST_TRANSACTIONS_*オプションの場合、サーバー・マシン上のこのファイルにコンテンツが書き込まれます:

  • フル・パスを入力できます。

  • デフォルト:

                            $ARBORPATH/app
                         

pCount

ESS_PULONG_T

戻されたエントリの数

ppResults

ESS_PPTRANSACTION_ENTRY_T

ListOptionがESS_LIST_TRANSACTIONS_TOCLIENTの場合に戻されるエントリ

戻り値

アクセス

リスト・トランザクションを呼び出す前に、アクティブな設定を使用してデータベースをアクティブにしておく必要があります。

呼出し元にはデータベースへのEssbase管理者アクセス権限が必要です。

         void ListAndReplayTransactions()
{
	ESS_FUNC_M				sts = ESS_STS_NOERR;
	ESS_USHORT_T				TimeSrc;
	ESS_TIME32_T				timestamp = 0;
	ESS_USHORT_T				listOption;
	ESS_STR_T					FileName = ESS_NULL;
	ESS_ULONG_T				Count = 0;
	ESS_PTRANSACTION_ENTRY_T	pResults;
	ESS_CHAR_T				listTime[ESS_TIMESIZE];
	ESS_TRANSACTION_REPLAY_INP_T	ReplayInp;
	ESS_PSEQID_T				pSeqIds = ESS_NULL;
	ESS_OBJDEF_T				Data;
	ESS_STR_T					Script;
	ESS_SHORT_T				isAbortOnError;
	ESS_PMBRERR_T			pMbrErr = NULL;
	ESS_PROCSTATE_T		pState;

	/* Load data from server */
	Data.hCtx      = hCtx;
	Data.AppName   = AppName;
	Data.DbName    = DbName;
	Data.ObjType   = ESS_OBJTYPE_TEXT;
	Data.FileName  = "Calcdat";
	isAbortOnError = ESS_TRUE;
	sts = EssImport (hCtx, ESS_NULL, &Data, 
								&pMbrErr, NULL, isAbortOnError);
	printf("EssImport sts: %ld\r\n",sts);

	/* List and replay with a specified time */
	TimeSrc = 1;
	strcpy(listTime, "09/18/2007:00:00:00");  
							/* mm/dd/yyyy:hh:mm:ss */
	timestamp = adtGenericGetTime(listTime);
	listOption = ESS_LIST_TRANSACTIONS_TOCLIENT;
	sts = 
         EssListTransactions(hCtx, TimeSrc, 
												timestamp, listOption, 
												FileName, &Count, &pResults);

         	
		/* This function converts listTime to the number of 
			seconds since January 1, 1970. */

	printf("EssListTransactions sts: %ld\r\n",sts);
	if (Count && pResults)
		PrintTransactionLog(Count, pResults);

	memset(&ReplayInp, 0, sizeof 
								(ESS_TRANSACTION_REPLAY_INP_T));
	ReplayInp.InpType = ESS_REPLAY_BASED_GIVENTIME;
	ReplayInp.value.InpTime = timestamp;
	sts = EssReplayTransactions (hCtx, AppName, DbName, 
													ReplayInp, pSeqIds);
	printf("EssReplayTransactions sts: %ld\r\n",sts);
	printf("\n\n");

	/* Run a calc*/
	Script = "CALC ALL;";
	sts = EssCalc(hCtx, ESS_TRUE, Script);
	printf("EssCalc sts: %ld\r\n",sts);
	if (!sts)
	{
		sts = EssGetProcessState (hCtx, &pState);
		while (!sts && (pState.State != ESS_STATE_DONE))
			sts = EssGetProcessState (hCtx, &pState);
	}

	/* List and replay with last replay time */
	TimeSrc = 2;
	timestamp = 0;
	sts = 
         EssListTransactions(hCtx, TimeSrc, 
											timestamp, listOption, 
											FileName, &Count, &pResults);

         
		/* This function converts listTime to the number of 
			seconds since January 1, 1970. */
	printf("EssListTransactions sts: %ld\r\n",sts);
	if (Count && pResults)
		PrintTransactionLog(Count, pResults);
	memset(&ReplayInp, 0, sizeof 
							(ESS_TRANSACTION_REPLAY_INP_T));
	ReplayInp.InpType = ESS_REPLAY_BASED_LASTREPLAYTIME;
	sts = EssReplayTransactions (hCtx, AppName, 
						DbName, ReplayInp, pSeqIds);
	printf("EssReplayTransactions sts: %ld\r\n",sts);

	if(pSeqIds)
		EssFree(hInst, pSeqIds);
	if(pResults)
		EssFree(hInst, pResults);
	if(pMbrErr)
		EssFree(hInst, pMbrErr);
}
      

関連トピック