非同期データ・ロード要求を発行します。
非同期データ・ロードおよび次元構築を使用する場合、このプロセス中に次の情報をクエリーできます:
次元構築/データ・ロード・プロセスの状態: 進行中、最終段階または完了済
次元構築/データ・ロード・プロセスの段階: データ・ソースを開いている最中、アウトラインの読取り中、次元の構築中、アウトラインの確認中またはアウトラインの書込み中
現在までに処理されたデータ・レコード数と拒否されたデータ・レコード数
エラー・ファイルの名前および場所
現在までに処理されたデータ・レコードと拒否されたデータ・レコード
構文
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); } } }
関連トピック