CURRENT_USER (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Cette fonction retourne le nom de l’utilisateur actif. Cette fonction est équivalente à USER_NAME().

Conventions de la syntaxe Transact-SQL

Syntaxe

CURRENT_USER  

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.

Types de retour

sysname

Notes

CURRENT_USER retourne le nom du contexte de sécurité actuel. Si CURRENT_USER s’exécute après qu’un appel à EXECUTE AS change de contexte, CURRENT_USER retourne le nom du contexte qui a fait l’objet d’un emprunt d’identité. Si un principal Windows a accédé à la base de données du fait de son appartenance à un groupe, CURRENT_USER retourne le nom du principal Windows à la place du nom du groupe.

Pour découvrir comment retourner le compte de connexion de l’utilisateur actif, consultez SUSER_NAME (Transact-SQL) et SYSTEM_USER (Transact-SQL).

Exemples

R. Utilisation de CURRENT_USER pour obtenir le nom de l'utilisateur actuel

Cet exemple retourne le nom de l’utilisateur actif.

SELECT CURRENT_USER;  
GO  

B. Utilisation de CURRENT_USER en tant que contrainte DEFAULT

Cet exemple crée une table qui utilise CURRENT_USER comme contrainte DEFAULT pour la colonne order_person dans une ligne de ventes.

USE AdventureWorks2022;  
GO  
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES  
      WHERE TABLE_NAME = 'orders22')  
   DROP TABLE orders22;  
GO  
SET NOCOUNT ON;  
CREATE TABLE orders22  
(  
order_id int IDENTITY(1000, 1) NOT NULL,
cust_id  int NOT NULL,
order_date smalldatetime NOT NULL DEFAULT GETDATE(),
order_amt money NOT NULL,
order_person char(30) NOT NULL DEFAULT CURRENT_USER
);  
GO  

Cet exemple insère un enregistrement dans la table. L’utilisateur nommé Wanida exécute ces instructions.

INSERT orders22 (cust_id, order_amt)  
VALUES (5105, 577.95);  
GO  
SET NOCOUNT OFF;  
GO  

Cette requête sélectionne toutes les informations dans la table orders22.

SELECT * FROM orders22;  
GO  

Voici le jeu de résultats obtenu.

order_id    cust_id     order_date           order_amt    order_person
----------- ----------- -------------------- ------------ ------------
1000        5105        2005-04-03 23:34:00  577.95       Wanida
  
(1 row(s) affected)

C. Utilisation de CURRENT_USER à partir d'un contexte d'emprunt

Dans cet exemple, l’utilisateur Wanida exécute le code Transact-SQL suivant pour emprunter l’identité de l’utilisateur « Arnalfo ».

SELECT CURRENT_USER;  
GO  
EXECUTE AS USER = 'Arnalfo';  
GO  
SELECT CURRENT_USER;  
GO  
REVERT;  
GO  
SELECT CURRENT_USER;  
GO  

Voici le jeu de résultats obtenu.

Wanida
Arnalfo
Wanida

Voir aussi

USER_NAME (Transact-SQL)
SYSTEM_USER (Transact-SQL)
sys.database_principals (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
Fonctions système (Transact-SQL)