sp_getapplock

  • Hi,

    My application allows a number of different users to be defined and currently a user can sign into the system, with the same account details, a number of times. I need to change this so that any one user can only ever be logged in once.

    So I was hoping that I could apply an application lock for each logged in user and check the status of the lock when attempting to sign in. I don't want the system to hang if the lock is already in place so I was trying to use the applock_test to check the status of the lock before trying to apply it.

    The problem I have is that the applock test always returns 1 even if the lock is in place.

    Am I doing something wrong? Is the better way to achieve this?

    Many Thanks

    Jon

    The code is wrapped in FoxPro but looks like this:

    * test the lock for the provided UserID

    w_chklock = g_ocsdb.ExecSQL("SELECT applock_test('public','" + ALLTRIM(UPPER(p_userid)) + "', 'Exclusive', 'Session')")

    IF w_chklock > 0

    * if the lock is available to grant lock it exclusively

    w_chklock = g_ocsdb.ExecSQL("EXEC sp_getapplock '" + ALLTRIM(UPPER(p_userid)) + "', 'Exclusive', 'Session',0")

    w_userct = 0

    ELSE

    * the lock is not available warn the user they cannot get in

    w_userct = 1

    ENDIF

Viewing 0 posts

You must be logged in to reply to this topic. Login to reply