APPLOCK_TEST (Transact-SQL)APPLOCK_TEST (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

Renvoie des informations indiquant si un verrou peut ou non être octroyé sur une ressource d'application à un propriétaire de verrou donné, sans qu'il y ait acquisition du verrou.Returns information about whether or not a lock can be granted on a particular application resource for a specified lock owner without acquiring the lock. APPLOCK_TEST est une fonction de verrouillage d'application qui agit sur la base de données active.APPLOCK_TEST is an application lock function, and it operates on the current database. L'étendue des verrous d'application est la base de données.The scope of application locks is the database.

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

SyntaxeSyntax

APPLOCK_TEST ( 'database_principal' , 'resource_name' , 'lock_mode' , 'lock_owner' )  

ArgumentsArguments

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

' nom_ressource '' resource_name '
Nom de ressource de verrou spécifié par l'application cliente.Is a lock resource name specified by the client application. L'application doit veiller à ce que la ressource soit unique.The application must ensure that the resource is unique. Le nom spécifié est haché en interne en une valeur qui peut être stockée dans le gestionnaire de verrous SQL ServerSQL Server.The specified name is hashed internally into a value that can be stored in the SQL ServerSQL Server lock manager. resource_nameest nvarchar (255) sans valeur par défaut.resource_nameis nvarchar(255) with no default. resource_name comparaison binaire et respecte la casse, indépendamment des paramètres de classement de la base de données actuelle.resource_name is binary compared and is case-sensitive, regardless of the collation settings of the current database.

' argument lock_mode '' lock_mode '
Mode de verrouillage à obtenir pour une ressource spécifique.Is the lock mode to be obtained for a particular resource. l’argument Lock_Mode est nvarchar(32) et n’a aucune valeur par défaut.lock_mode is nvarchar(32) and has no default value. La valeur peut être une des opérations suivantes : Shared, mise à jour, IntentShared, IntentExclusive, exclusif.The value can be any of the following: Shared, Update, IntentShared, IntentExclusive, Exclusive.

' lock_owner '' lock_owner '
Est le propriétaire du verrou, qui est la lock_owner valeur lorsque le verrou a été demandé.Is the owner of the lock, which is the lock_owner value when the lock was requested. lock_owner est nvarchar(32).lock_owner is nvarchar(32). La valeur peut être Transaction (la valeur par défaut) ou Session.The value can be Transaction (the default) or Session. Si par défaut ou Transaction est explicitement spécifiée, APPLOCK_TEST doit être exécutée à partir d’une transaction.If default or Transaction is explicitly specified, APPLOCK_TEST must be executed from within a transaction.

Types de retourReturn types

smallintsmallint

Valeur retournéeReturn value

Renvoie la valeur 0 lorsque le verrou ne peut pas être octroyé au propriétaire spécifié et renvoie la valeur 1 si le verrou peut être attribué.Returns 0 when the lock cannot be granted to the specified owner and returns 1 if the lock can be granted.

Propriétés de la fonctionFunction properties

Non déterministesNondeterministic

Non indexableNonindexable

Non ParallélisableNonparallelizable

ExemplesExamples

Dans l’exemple suivant, deux utilisateurs (l’utilisateur A et utilisateur B) dans des sessions différentes exécute la séquence suivante de Transact-SQLTransact-SQL instructions.In the following example, two users (User A and User B) with separate sessions run the following sequence of Transact-SQLTransact-SQL statements.

L’utilisateur A s’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 ensuite :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 ensuite :User B then runs:

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

L’utilisateur A et utilisateur B puis s’exécutent tous deux :User A and User B then both run:

COMMIT TRAN;  
GO  

Voir aussiSee also

APPLOCK_MODE ( Transact-SQL )APPLOCK_MODE (Transact-SQL)
sp_getapplock ( Transact-SQL )sp_getapplock (Transact-SQL)
sp_releaseapplock ( Transact-SQL )sp_releaseapplock (Transact-SQL)