APPLOCK_MODE |
Mode d'application de verrou |
SQL Server |
Microsoft SQL Server |
Syntaxe
APPLOCK_MODE( database_principal , resource_name , lock_owner )
|
Paramètres
Nom |
Description |
database_principal |
Ce paramètre permet d'indiquer un utilisateur, un rôle ou un rôle d'application pouvant donner des permissions aux objets d'une base de données. |
resource_name |
Ce paramètre permet d'indiquer un nom de ressource de verrou spécifié par l'application client. |
lock_owner |
Ce paramètre permet d'indiquer le propriétaire du verrou. |
Retour
Valeur |
Description |
nvarchar(32) |
Ces valeurs permettent d'indiquer le mode de verrou. |
Description
Cette fonction permet de demander le mode de verrou détenu par le propriétaire du verrou sur une ressource d'application particulière.
Remarques
- Permet d'inspecter les verrous personnalisés définis par l'application : La fonction APPLOCK_MODE() est utilisée pour savoir si une ressource
particulière est verrouillée par une application, et dans quel mode de verrouillage (par exemple : Shared, Exclusive, Update,...). Cela aide à gérer des accès concurrents
spécifiques à la logique métier de l'application.
- Utilisable avec des verrous définis via sp_getapplock : Les verrous d'application étant créés avec la procédure
sp_getapplock, APPLOCK_MODE() permet de consulter l'état d'un tel verrou. Cela permet de vérifier si un autre processus a déjà
acquis le verrou, et dans quel mode, avant de tenter une nouvelle acquisition.
- Trois paramètres nécessaires pour identifier le verrou : La fonction prend trois paramètres : le principal de base de données (utilisateur ou rôle),
le nom de la ressource verrouillée (défini librement par l'application), et le propriétaire du verrou (Transaction, Session, etc.). Une mauvaise combinaison renverra
NULL.
- Retourne une valeur descriptive du mode de verrou : Le type de retour est nvarchar(32) et peut contenir des valeurs comme NULL, IntentShared,
Shared, Update, IntentExclusive, Exclusive. Ces informations sont essentielles pour diagnostiquer les blocages applicatifs ou des conflits de concurrence.
- Permet d'éviter des contentions en base sans verrouillage physique de table : Les verrous d'application sont virtuels, stockés dans la table système
syslockinfo. Grâce à APPLOCK_MODE(), une application peut implémenter un système de contrôle d'accès exclusif sur une ressource logique, sans bloquer physiquement
une table ou une ligne.
- Utile dans les systèmes distribués ou les traitements par lots : Quand plusieurs agents ou processus de traitement par lot accèdent à une même ressource
logique (fichier, tâche, document), APPLOCK_MODE() permet de vérifier qu'aucun autre agent ne la traite déjà. Cela évite les doublons ou les traitements parallèles
non souhaités.
- Fonctionne uniquement sur les verrous encore détenus : APPLOCK_MODE() ne retourne de résultat que si le verrou spécifié est encore actif. Si le
verrou a expiré ou a été libéré (via sp_releaseapplock), la fonction retournera NULL, ce qui signifie que la ressource est libre ou inconnue dans le contexte.
- Peut servir dans les audits ou les diagnostics de contention logique : Elle peut être intégrée dans des scripts de diagnostic pour analyser quels verrous
sont actuellement en place sur certaines ressources métiers critiques. Cela offre une granularité d'analyse supérieure à celle des verrous traditionnels (pages, lignes,
tables).
Voir également
Articles - Les géants de l'informatique - Microsoft
Dernière mise à jour : Dimanche, le 5 novembre 2017