特定のEssbaseユーザー・セッションまたは要求を終了します。EssKillRequestに似ていますが、入力構造体には、ユーザー・ディレクトリおよび一意のID属性を含められます。
構文
ESS_FUNC_M EssKillRequestEx (
hCtx
,
pRequestInfoStruct
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル(入力)。 |
pRequestInfoStruct |
ESS_PREQUESTINFOEX_T |
要求情報構造体へのポインタ(入力)。 |
備考
この関数はESS_REQUESTINFO_T内の現行セッションに関する情報を使用して、特定のユーザー・セッションの終了を要求します。この関数は、ユーザー・セッション中に、アプリケーション、データベースまたはシステムに対して行われているアクティブな要求を終了(ユーザーのログアウトは行わずに)する場合にも使用できます。
セッションとは、Essbaseユーザーがログインしてからログアウトするまでの時間を秒数で表したものです。
要求とは、ユーザーまたは他のプロセスがEssbaseに対して送信するクエリーです。たとえば、アプリケーションの起動やデータベース・アウトラインの再構築に対する要求などがあります。各セッションは同時に複数の要求を処理できないため、セッションと要求は1対1の関係にあります。
この関数は、ESS_REQUESTINFOEX_T構造体のUserName、AppName、およびDbNameで指定されたセッション/要求を終了します。これらのフィールドがNULLの場合、この関数はこのプロセス(ユーザー)によって起動されたすべてのセッションと要求を終了します。アプリケーション・プログラムは、ESS_REQUESTINFOEX_Tによって使用されるメモリーの割当てと解放を行います。
自分のアクティブ要求を切断する(クエリーの取消し)には、Essbase初期化構造体に関する項の説明に従ってカスタム・コールバック関数を設定します。ESS_INIT_Tを参照してください。
戻り値
正常終了の場合は0が戻され、失敗した場合はエラー・コードが戻されます。
例
void ListRequestsEx ()
{
ESS_STS_T sts = ESS_STS_NOERR;
ESS_STR_T userId;
ESS_BOOL_T bIsIdentity;
ESS_USHORT_T numRequest;
ESS_PREQUESTINFOEX_T requestInfo;
ESS_USHORT_T index = 0;
userId = "admin";
bIsIdentity = ESS_FALSE;
sts = EssListRequestsEx(hCtx, userId, bIsIdentity, "Sample", "Sample1", &numRequest, &requestInfo);
printf("\nEssListRequestsEx sts: %ld\n", sts);
printf ( "Total requests on the server: %d\n", numRequest );
if ( !sts && requestInfo )
{
while ( index < numRequest )
{
printf ( "login ID = %ul\n", requestInfo[index].LoginId );
printf ( "user name = %s\n", requestInfo[index].UserName );
printf ( "login machine = %s\n", requestInfo[index].LoginSourceMachine );
printf ( "AppName = %s\n", requestInfo[index].AppName );
printf ( "DbName = %s\n", requestInfo[index].DbName );
printf ( "DbRequestCode = %u\n", requestInfo[index].DbRequestCode );
printf ( "RequestString = %s\n", requestInfo[index].RequestString );
printf ( "TimeStarted = %ul\n", requestInfo[index].TimeStarted );
printf ( "State = %d\n", requestInfo[index].State );
printf ( "\n\n--------------------------------------\n\n", requestInfo[index].State );
sts = EssKillRequestEx (hCtx, &requestInfo[index] );
index++;
}
EssFree ( hInst, requestInfo );
}
userId = " native://nvid=f0ed2a6d7fb07688:5a342200:1265973105c:-7f46?USER ";
bIsIdentity = ESS_TRUE;
sts = EssListRequestsEx(hCtx, userId, bIsIdentity, "Sample", "Sample1", &numRequest, &requestInfo);
printf("\nEssListRequestsEx sts: %ld\n", sts);
printf ( "Total requests on the server: %d\n", numRequest );
if ( !sts && requestInfo )
{
while ( index < numRequest )
{
printf ( "login ID = %ul\n", requestInfo[index].LoginId );
printf ( "user name = %s\n", requestInfo[index].UserName );
printf ( "login machine = %s\n", requestInfo[index].LoginSourceMachine );
printf ( "AppName = %s\n", requestInfo[index].AppName );
printf ( "DbName = %s\n", requestInfo[index].DbName );
printf ( "DbRequestCode = %u\n", requestInfo[index].DbRequestCode );
printf ( "RequestString = %s\n", requestInfo[index].RequestString );
printf ( "TimeStarted = %ul\n", requestInfo[index].TimeStarted );
printf ( "State = %d\n", requestInfo[index].State );
printf ( "\n\n--------------------------------------\n\n", requestInfo[index].State );
sts = EssKillRequestEx (hCtx, &requestInfo[index] );
index++;
}
EssFree ( hInst, requestInfo );
}
}
関連トピック