EssAsyncImport

非同期データ・ロード要求を発行します。

非同期データ・ロードおよび次元構築を使用する場合、このプロセス中に次の情報をクエリーできます:

構文

            ESS_FUNC_M EssAsyncImport (
            hCtx, pRules, pData, pMbrUser, abortOnError
            );
         
パラメータデータ型説明

hCtx

ESS_HCTX_T

APIコンテキスト・ハンドル。

pRules

ESS_POBJDEF_T

ルール・ファイル・オブジェクト定義構造体へのポインタ。

pData

ESS_POBJDEF_T

データ・ファイル・オブジェクト定義構造体へのポインタ。

pMbrUser

ESS_PMBRUSER_T

SQLユーザー構造体へのポインタ(データ・ソースがSQLデータベースの場合)。SQLユーザー構造体がNULLの場合は、SQL以外のデータ・ソースを示します。

abortOnError

ESS_USHORT_T

TRUEの場合、最初のエラーでインポートが停止します。それ以外の場合は続行します。

備考

この関数は、データ・オブジェクトがクライアント上にある場合はエラーを戻します。エラーが戻された場合でも、クライアントとサーバー間のネットワーク接続はアクティブなままです。

接続を閉じるには、EssCloseAsyncProcを呼び出す必要があります。接続を閉じていない場合、サーバー要求ハンドラにより、同じログイン・セッションからの後続の要求がブロックされます。

戻り値

正常終了の場合は0が戻されます。それ以外の場合、エラー・コードが戻されます。

アクセス

この関数を使用するには、呼出し元が、指定したデータベースに対するデータベース・デザイナ権限(ESS_PRIV_DBDESIGN)を持っている必要があります。

         
ESS_AsyncImport()
{
	ESS_STS_T sts = ESS_STS_NOERR;
	ESS_SHORT_T isAbortOnError;
	ESS_OBJDEF_T Rules;
	ESS_OBJDEF_T Data;
	ESS_PMBRUSER_T pUser;                 
	ESS_STR_T errorName;
	ESS_BLDDL_STATE_T procState;
	ESS_BOOL_T errFileOverWrite;

	szAppName = "Sample";
	szDbName = "Basic";
	ESS_SetActive();

	memset(&Rules,0,sizeof(ESS_OBJDEF_T));
	memset(&Data,0,sizeof(ESS_OBJDEF_T));
	Rules.hCtx     = hCtx;
	Rules.FileName = "Act1"; 
	Rules.AppName  = szAppName;
	Rules.DbName   = szDbName;
	Rules.ObjType  = ESS_OBJTYPE_RULES;  
	Data.hCtx      = hCtx;
	Data.FileName = "Act1"; 
	Data.AppName   = szAppName;
	Data.DbName    = szDbName;
	Data.ObjType   = ESS_OBJTYPE_TEXT;    

	errorName = ".\\asyncProcess.err";
	errFileOverWrite = ESS_TRUE;
	isAbortOnError = ESS_TRUE;
	pUser = ESS_NULL;   /* NULL equals a non-SQL data source */
	sts = EssAsyncImport (hCtx, &Rules, &Data, pUser, isAbortOnError);
	printf("EssAsyncImport sts: %ld\n",sts);

	sts = EssGetAsyncProcState(hCtx, &procState);
	printf("EssGetAsyncProcState sts: %ld\n",sts);
	if(!sts)
	{
		do
		{
			DisplyProcesStateInfo(procState);
			if(procState.ilProcessStatus)
			{
				sts = EssCancelAsyncProc(hCtx, errorName, errFileOverWrite);
				printf("EssCancelAsyncProc sts: %ld\n",sts);
			}
			else
			{
				sts = EssGetAsyncProcState(hCtx, &procState);
				printf("EssGetAsyncProcState sts: %ld\n",sts);
			}

		}while(procState.usProcessState != ESS_BLDDL_STATE_DONE);
		
		if(!procState.ilProcessStatus)
		{
			sts = EssCloseAsyncProc(hCtx, &procState);
			printf("EssCloseAsyncProc sts: %ld\n",sts);
		}
	}
}
      

関連トピック