Click here to monitor SSC
SQLServerCentral is supported by Redgate
Log in  ::  Register  ::  Not logged in
Home       Members    Calendar    Who's On

Add to briefcase

sp_getapplock Expand / Collapse
Posted Tuesday, January 12, 2010 4:06 AM
SSC Veteran

SSC VeteranSSC VeteranSSC VeteranSSC VeteranSSC VeteranSSC VeteranSSC VeteranSSC Veteran

Group: General Forum Members
Last Login: Tuesday, August 30, 2016 6:51 AM
Points: 280, Visits: 259

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


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
* the lock is not available warn the user they cannot get in
w_userct = 1

Post #845998
« Prev Topic | Next Topic »

Add to briefcase

Permissions Expand / Collapse