sp_releaseapplock (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Libère un verrou appliqué à une ressource d'application.

Conventions de la syntaxe Transact-SQL

Syntaxe

  
sp_releaseapplock [ @Resource = ] 'resource_name'   
     [ , [ @LockOwner = ] 'lock_owner' ]  
     [ , [ @DbPrincipal = ] 'database_principal' ]  
[ ; ]  

Arguments

[ @Resource= ] 'resource_name'
Nom de ressource de verrou spécifié par l'application cliente. L'application doit veiller à ce que la ressource soit unique. Le nom spécifié est haché en interne dans une valeur qui peut être stockée dans le gestionnaire de verrous SQL Server. resource_name est nvarchar(255) sans valeur par défaut. resource_name est comparé binaire, ce qui respecte la casse indépendamment des paramètres de classement de la base de données active.

[ @LockOwner= ] 'lock_owner'
Propriétaire du verrou, qui est la valeur de lock_owner lorsque le verrou a été demandé. lock_owner est de type nvarchar(32). La valeur peut être Transaction (valeur par défaut) ou Session. Lorsque la valeur lock_owner est Transaction, par défaut ou spécifiée explicitement, sp_getapplock doit être exécutée à partir d’une transaction.

[ @DbPrincipal= ] 'database_principal'
Utilisateur, rôle ou rôle d'application qui dispose d'autorisations sur un objet d'une base de données. L’appelant de la fonction doit être membre du rôle de base de données fixe database_principal, dbo ou db_owner pour pouvoir appeler la fonction. La valeur par défaut est public.

Codet de retour

>= 0 (réussite) ou < 0 (échec)

Valeur Résultats
0 Le verrou a été libéré avec succès.
-999 Indique la validation de paramètre ou une autre erreur d'appel.

Notes

Si une application utilise plusieurs fois sp_getapplock pour appeler la même ressource de verrou, sp_releaseapplock doit être appelée autant de fois pour libérer le verrou.

Lorsque le serveur s'interrompt pour une raison quelconque, les verrous sont libérés.

Autorisations

Nécessite l'appartenance au rôle public.

Exemples

L'exemple suivant libère le verrou associé à la transaction active sur la ressource Form1 de la base de données AdventureWorks2022.

USE AdventureWorks2022;  
GO  
EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'Form1',   
     @LockMode = 'Shared';  
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'Form1';  
GO  

Voir aussi

APPLOCK_MODE (Transact-SQL)
APPLOCK_TEST (Transact-SQL)
sp_getapplock (Transact-SQL)