USER_NAME (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Renvoie le nom d’utilisateur de base de données à partir du numéro d’identification spécifié ou le nom d’utilisateur actuel.

Conventions de la syntaxe Transact-SQL

Syntaxe

USER_NAME ( [ ID ] )

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

Identifiant

Numéro d’identification associé à un utilisateur de base de données, comme indiqué dans sys.database_principals. ID est de type int. Les parenthèses sont obligatoires.

Types de retour

nvarchar(128)

Remarques

Quand ID est omis, l’utilisateur actuel dans le contexte actuel est pris en compte. Si le paramètre contient le mot NULL, USER_NAME retourne NULL. Quand USER_NAME est appelé sans spécifier un ID après une instruction EXECUTE AS, USER_NAME renvoie le nom de l’utilisateur impersonné. Si un principal Windows accède à la base de données par l’intermédiaire de son appartenance à un groupe, USER_NAME renvoie le nom du principal Windows à la place du groupe.

Bien que la fonction USER_NAME() soit prise en charge sur Azure SQL Database, l’utilisation de EXECUTE AS USER = USER_NAME(n) n’est pas prise en charge sur Azure SQL Database.

Exemples

R. Utiliser USER_NAME() pour identifier un ID d’utilisateur

L’exemple suivant retourne le nom d’utilisateur de l’ID d’utilisateur 13, comme indiqué dans sys.database_principals.

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  

Jeu de résultats (pour un utilisateur membre du rôle serveur fixe sysadmin) :

dbo  

C. Utilisation de USER_NAME dans la clause WHERE

Le code exemple suivant recherche dans sys.database_principals 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 sys.database_principals WHERE name = USER_NAME(1);  
GO  

Voici le jeu de résultats obtenu.

name  
------------------------------  
dbo  
  
(1 row(s) affected)

D. Appel de USER_NAME pendant une usurpation d’identité avec EXECUTE AS

Le code exemple suivant illustre le comportement de USER_NAME pendant l'emprunt d'identité.

EXECUTE AS n’est pas actuellement pris en charge dans Microsoft Fabric.

Attention

Au moment du test avec EXECUTE AS, créez toujours un REVERT script à suivre.

SELECT USER_NAME();  
GO  
EXECUTE AS USER = 'Zelig';  
GO  
SELECT USER_NAME();  
GO  
REVERT;  
GO  
SELECT USER_NAME();  
GO  

Voici le jeu de résultats obtenu.

-------------
dbo  

-------------
Zelig  

-------------
dbo  

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

E. 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();  

Voici le jeu de résultats pour un utilisateur actuellement connecté.

User7                              

F. 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);  

Voici le jeu de résultats obtenu.

name                             
------------------------------   
User7