APP_NAME |
Nom de l'application |
|---|---|
| SQL Server | Microsoft SQL Server |
Syntaxe
| APP_NAME() |
Description
Cette fonction permet de demander le nom de l'application de la session courante.
Algorithme
|
APP_NAME() ← nomapplication |
Remarques
- Retourne le nom de l'application cliente connectée : La fonction APP_NAME() renvoie le nom défini par l'application cliente lors de l'ouverture de la connexion SQL. Ce nom est souvent défini via la chaîne de connexion, notamment à l'aide du paramètre Application Name, ce qui permet d'identifier l'origine de la session SQL.
- Utile pour la journalisation et l'audit des connexions : APP_NAME() est souvent utilisée dans des déclencheurs ou des vues d'audit pour enregistrer l'origine applicative des requêtes. Cela facilite le suivi des actions effectuées dans la base par différentes applications ou modules, surtout dans les environnements multi-clients.
- Peut être personnalisée dans la chaîne de connexion : Dans ADO.NET, ODBC, JDBC ou d'autres frameworks, il est possible de spécifier l'option Application Name dans la chaîne de connexion. Cela rend la valeur retournée par APP_NAME() personnalisable, permettant à une même application de distinguer différents modules ou contextes d'exécution.
- Donne un aperçu du contexte d'exécution sans passer par sys.dm_exec_sessions : Plutôt que de faire une jointure sur les vues système comme sys.dm_exec_sessions pour connaître l'application liée à une session, on peut directement appeler APP_NAME() dans une requête. Cela rend son usage très pratique pour des scripts conditionnels ou des règles de sécurité.
- Renvoie NULL si aucune information n'est disponible : Si l'application cliente ne fournit pas explicitement de nom dans la chaîne de connexion, la fonction APP_NAME() peut renvoyer NULL. Il est donc conseillé de toujours vérifier la présence d'une valeur avant de s'appuyer sur elle dans une logique métier.
- Particulièrement utile dans les déclencheurs ou des journaux personnalisés : APP_NAME() est fréquemment utilisée dans les déclencheurs AFTER INSERT ou AFTER UPDATE pour enregistrer quel module a réalisé une opération. Cela permet de retracer les actions en base de manière plus précise que l'utilisateur SQL seul.
- Peut être comparée à ORIGINAL_LOGIN() et SUSER_SNAME() pour plus de contexte : En conjonction avec d'autres fonctions comme HOST_NAME(), SUSER_SNAME() ou ORIGINAL_LOGIN(), APP_NAME() enrichit le contexte d'analyse des connexions SQL. Elle aide à mieux profiler les sessions et les rôles qu'elles jouent.
- Utile pour implémenter des restrictions conditionnelles dans la logique SQL : Il est possible d'écrire des requêtes ou STORED PROCEDURES dont le comportement varie selon la valeur retournée par APP_NAME(). Cela peut servir à désactiver certaines fonctionnalités pour des modules spécifiques ou à appliquer des restrictions selon l'application appelante.
Exemple
Voici un exemple montrant comment afficher l'information :
- SELECT APP_NAME() AS Expr1
on obtiendra le résultat suivant :
| Expr1 |
| .Net SqlClient Data Provider |
Voir également
Articles - Les géants de l'informatique - Microsoft
Dernière mise à jour : Dimanche, le 7 juin 2015