EssRemoveLocks() removes all data block locks on a database which are currently held by a user.
ESS_FUNC_M EssRemoveLocks (hCtx, AppName, DbName, LoginId);
| ESS_HCTX_T | hCtx |
| ESS_STR_T | AppName |
| ESS_STR_T | DbName |
| ESS_LOGINID_T | LoginId |
| hCtx | Essbase API context handle. |
| AppName | Application name. |
| DbName | Database name. |
| LoginId | Id of user login whose locks are to be removed. |
None.
This function requires the caller to have database Design privilege (ESS_PRIV_DBDESIGN) for the specified database.
ESS_FUNC_M
ESS_RemoveLocks (ESS_HCTX_T hCtx,
ESS_HINST_T hInst
)
{
ESS_FUNC_M sts = ESS_STS_NOERR;
ESS_USHORT_T Count;
ESS_PLOCKINFO_T plockinfo = NULL;
ESS_PLOCKINFO_T plinfo;
ESS_USHORT_T ind;
ESS_SHORT_T Item;
ESS_STR_T AppName;
ESS_STR_T DbName;
AppName = "Sample";
DbName = "Basic";
for (ind = 0; ind < Count; ind++)
{
plinfo = plockinfo + ind;
printf ("%-2d %-15s %-12ld %-5d %ld\r\n",
ind, plinfo->UserName, plinfo->LoginId,
plinfo->nLocks, plinfo->Time);
}
printf ("\r\n");
/***********************************
* Chooser Lock List Item to Remove *
************************************/
Item = 1;
}
else
{
printf ("\r\nExclusive Lock List on %s:%s is empty\r\n\r\n",
AppName, DbName);
goto exit;
}
if (!sts)
{
if ((Item >= 0) && (Item < Count))
{
plinfo = plockinfo + Item;
sts = EssRemoveLocks (hCtx, AppName,
DbName, plinfo->LoginId);
}
}
exit:
if (plockinfo)
EssFree (hInst, plockinfo);
return (sts);
}