アクティブなセッションおよび要求に関する情報を戻します。EssListRequestsに似ていますが、ユーザー・ディレクトリにホストされているユーザーが含まれます。
構文
ESS_FUNC_M EssListRequestsEx (
hCtx
,
UserId
,
bIsIdentity
,
AppName
,
DbName
,
RequestCount
,
pRequestInfo
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル(入力)。 |
UserId |
ESS_STR_T |
ユーザー名またはID (入力)。IDの場合は、ユーザー・ディレクトリのユーザーを識別する一意のID文字列が含まれます。 |
bIsIdentity |
ESS_BOOL_T |
ユーザーIDが使用されるか、ユーザー名が使用されるかを示します。TRUEの場合、UserIdは一意のID属性です。FALSEの場合、UserIdはユーザー名です。 |
AppName |
ESS_STR_T |
アプリケーション名(入力)。 |
DbName |
ESS_STR_T |
データベース名(入力)。 |
RequestCount |
ESS_PUSHORT_T |
要求の数(出力)。 |
pRequestInfo |
ESS_PREQUESTINFOEX_T |
要求のタイプ(出力)。 |
備考
セッションとは、ユーザーがログインしてからログアウトするまでの時間を秒数で表したものです。
要求とは、ユーザーまたは他のプロセスがEssbaseに対して送信するクエリーです。たとえば、アプリケーションの起動やデータベース・アウトラインの再構築に対する要求などがあります。各セッションは同時に複数の要求を処理できないため、セッションと要求は1対1の関係にあります。
リストされた要求の中には終了済にもかかわらず、ネットワークの遅延によってアクティブとしてリストされたままのものもあります。
この関数によって、UserID、AppNameおよびDbNameで指定されたプロセスによって起動された要求およびセッションに関する情報が戻されます。これらのパラメータがNULLまたは空の場合、システム内のすべてのプロセスがリストされます。この関数は現行の要求数と、要求ごとに1つのESS_REQUESTINFOEX_T構造体を戻します。
戻されるppRequestInfoStructは、EssFreeを呼び出して解放する必要があります。
戻り値
正常終了の場合は0が戻され、失敗した場合はエラー・コードが戻されます。
アクセス
この関数を使用するには、呼出し元が、指定したデータベースに対してデータベース・デザイナ権限(ESS_PRIV_DBDESIGN)を持っている必要があります。
例
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 );
}
}
関連トピック