APPLOCK_MODE (Transact-SQL)APPLOCK_MODE (Transact-SQL)

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabasenonAzure SQL Data Warehouse nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Cette fonction retourne le mode de verrouillage détenu par le propriétaire du verrou sur une ressource d’application particulière.This function returns the lock mode held by the lock owner on a particular application resource. En tant que fonction de verrouillage d'application, APPLOCK_MODE agit sur la base de données active.As an application lock function, APPLOCK_MODE operates on the current database. La base de données constitue l'étendue des verrous d'application.The database is the scope of the application locks.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

APPLOCK_MODE( 'database_principal' , 'resource_name' , 'lock_owner' )  

ArgumentsArguments

'database_principal''database_principal'
Utilisateur, rôle ou rôle d’application qui peuvent se voir octroyer des autorisations sur des objets dans la base de données.The user, role, or application role that can be granted permissions to objects in the database. Pour pouvoir appeler la fonction, l’appelant de la fonction doit être membre du rôle de base de données fixe database_principal, dbo ou db_owner.To successfully call the function, the function caller must be a member of database_principal, dbo, or the db_owner fixed database role.

'resource_name''resource_name'
Nom de ressource de verrouillage spécifié par l'application cliente.A lock resource name specified by the client application. L'application doit garantir un nom de ressource unique.The application must ensure a unique resource name. Le nom spécifié est haché en interne en une valeur que le gestionnaire de verrous SQL ServerSQL Server peut stocker en interne.The specified name is hashed internally into a value that the SQL ServerSQL Server lock manager can internally store. resource_name est de type nvarchar(255), sans valeur par défaut.resource_nameis nvarchar(255), with no default. L’argument resource_name est évalué en binaire et respecte la casse, quels que soient les paramètres de classement de la base de données active.resource_name is binary compared, and is case-sensitive regardless of the collation settings of the current database.

'lock_owner''lock_owner'
Propriétaire du verrou, correspondant à la valeur lock_owner lorsque le verrou a été demandé.The owner of the lock, which is the lock_owner value when the lock was requested. lock_owner est de type nvarchar(32) et sa valeur peut être Transaction (valeur par défaut) ou Session.lock_owner is nvarchar(32), and the value can be either Transaction (the default) or Session.

Types de retourReturn types

nvarchar(32)nvarchar(32)

Valeur retournéeReturn value

Renvoie le mode de verrouillage détenu par le propriétaire du verrou sur une ressource d'application particulière.Returns the lock mode held by the lock owner on a particular application resource. Le mode de verrouillage peut avoir une des valeurs suivantes :Lock mode can have any one of these values:

NoLockNoLock UpdateUpdate *SharedIntentExclusive*SharedIntentExclusive
IntentSharedIntentShared IntentExclusiveIntentExclusive *UpdateIntentExclusive*UpdateIntentExclusive
SharedShared ExclusiveExclusive

*Ce mode de verrouillage est une combinaison d'autres modes de verrouillage et sp_getapplock ne peut pas l'acquérir explicitement.*This lock mode is a combination of other lock modes and sp_getapplock cannot explicitly acquire it.

Propriétés de la fonctionFunction properties

Non déterministeNondeterministic

Non indexableNonindexable

Non parallélisableNonparallelizable

ExemplesExamples

Deux utilisateurs (A et B) exécutent la séquence d'instructions Transact-SQLTransact-SQL suivante dans des sessions différentes.Two users (User A and User B), with separate sessions, run the following sequence of Transact-SQLTransact-SQL statements.

L'utilisateur A exécute :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  

L'utilisateur B exécute :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  

L'utilisateur A exécute ensuite :User A then runs:

EXEC sp_releaseapplock @Resource='Form1', @DbPrincipal='public';  
GO  

L'utilisateur B exécute :User B then runs:

SELECT APPLOCK_TEST('public', 'Form1', 'Exclusive', 'Transaction');  
--Result set: '1' (The lock is grantable.)  
GO  

Les utilisateurs A et B exécutent ensuite :User A and User B then run:

COMMIT TRAN;  
GO  

Voir aussiSee also

APPLOCK_TEST (Transact-SQL)APPLOCK_TEST (Transact-SQL)
sp_getapplock (Transact-SQL)sp_getapplock (Transact-SQL)
sp_releaseapplock (Transact-SQL)sp_releaseapplock (Transact-SQL)