USER_NAME (Transact-SQL)
Renvoie le nom d'utilisateur de base de données à partir du numéro d'identification spécifié.
Conventions de syntaxe Transact-SQL
Si id est omis, l'utilisateur actuel dans le contexte actuel est pris en compte. Lorsque USER_NAME est appelée sans spécifier un id après une instruction EXECUTE AS, USER_NAME renvoie le nom de l'utilisateur qui a emprunté l'identité. Si une entité de sécurité Windows accède à la base de données par l'intermédiaire de son appartenance à un groupe, USER_NAME renvoie le nom de l'entité de sécurité Windows à la place du groupe.
A. Utilisation de USER_NAME
Le code exemple suivant renvoie le nom de l'utilisateur ayant l'ID 13.
SELECT USER_NAME(13); GO
B. Utilisation de USER_NAME sans ID
Le code exemple suivant recherche le nom de l'utilisateur actuel sans spécifier un ID.
SELECT USER_NAME(); GO
Ensemble de résultats (pour un utilisateur membre du rôle de serveur fixe sysadmin) :
------------------------------ dbo (1 row(s) affected)
C. Utilisation de USER_NAME dans la clause WHERE
Le code exemple suivant recherche dans sysusers la ligne dans laquelle le nom est égal au résultat de l'application de la fonction système USER_NAME à l'utilisateur identifié par le numéro 1.
SELECT name FROM sysusers WHERE name = USER_NAME(1); GO
Voici l'ensemble des résultats.
name ------------------------------ dbo (1 row(s) affected)
D. Appel de USER_NAME pendant un emprunt d'identité avec EXECUTE AS
Le code exemple suivant illustre le comportement de USER_NAME pendant l'emprunt d'identité.
SELECT USER_NAME(); GO EXECUTE AS USER = 'Zelig'; GO SELECT USER_NAME(); GO REVERT; GO SELECT USER_NAME(); GO
Voici l'ensemble des résultats.
DBO Zelig DBO
Référence
ALTER TABLE (Transact-SQL)CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
Fonctions système (Transact-SQL)
SYSTEM_USER (Transact-SQL)