Click here to monitor SSC
SQLServerCentral is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
 
 
 
        
Home       Members    Calendar    Who's On


Add to briefcase

sp_getapplock Expand / Collapse
Author
Message
Posted Tuesday, January 12, 2010 4:06 AM
SSC-Enthusiastic

SSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-EnthusiasticSSC-Enthusiastic

Group: General Forum Members
Last Login: Monday, February 17, 2014 1:33 AM
Points: 123, Visits: 68
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

Post #845998
« Prev Topic | Next Topic »

Add to briefcase

Permissions Expand / Collapse