APPLOCK_MODE (Transact-SQL)
Returns the lock mode held by the lock owner on a particular application resource. APPLOCK_MODE is an application lock function, and it operates on the current database. The scope of application locks is the database.
Returns the lock mode held by the lock owner on a particular application resource. Lock mode can be any one of these values:
|
NoLock |
Update |
*SharedIntentExclusive |
|
IntentShared |
IntentExclusive |
*UpdateIntentExclusive |
|
Shared |
Exclusive |
|
*This lock mode is a combination of other lock modes and cannot be explicitly acquired by using sp_getapplock.
Two users (User A and User B) with separate sessions run the following sequence of Transact-SQL statements.
User A runs:
USE AdventureWorks2012;
GO
BEGIN TRAN;
DECLARE @result int;
EXEC @result=sp_getapplock
@DbPrincipal='public',
@Resource='Form1',
@LockMode='Shared',
@LockOwner='Transaction';
SELECT APPLOCK_MODE('public', 'Form1', 'Transaction');
GO
User B then runs:
Use AdventureWorks2012;
GO
BEGIN TRAN;
SELECT APPLOCK_MODE('public', 'Form1', 'Transaction');
--Result set: NoLock
SELECT APPLOCK_TEST('public', 'Form1', 'Shared', 'Transaction');
--Result set: 1 (Lock is grantable.)
SELECT APPLOCK_TEST('public', 'Form1', 'Exclusive', 'Transaction');
--Result set: 0 (Lock is not grantable.)
GO
User A then runs:
EXEC sp_releaseapplock @Resource='Form1', @DbPrincipal='public'; GO
User B then runs:
SELECT APPLOCK_TEST('public', 'Form1', 'Exclusive', 'Transaction');
--Result set: '1' (The lock is grantable.)
GO
User A and User B then run:
COMMIT TRAN; GO
