Partage via


SESSION_USER (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

SESSION_USER retourne le nom d'utilisateur du contexte actuel dans la base de données active.

Conventions de la syntaxe Transact-SQL

Syntaxe

SESSION_USER  

Types de retour

nvarchar(128)

Remarques

Utilisez SESSION_USER comme une fonction standard ou avec les contraintes DEFAULT dans les instructions CREATE TABLE ou ALTER TABLE. La fonction SESSION_USER peut être insérée dans une table quand aucune valeur par défaut n'est spécifiée. Cette fonction ne prend pas d'arguments. SESSION_USER peut s'utiliser dans des requêtes.

Si un appel à SESSION_USER intervient après un commutateur de contexte, cette fonction retourne le nom d'utilisateur du nouveau contexte.

Exemples

R. Utilisation de SESSION_USER pour obtenir le nom d'utilisateur de la session active

L'exemple suivant déclare une variable de type nchar, lui affecte la valeur actuelle de SESSION_USER, puis imprime la variable avec un texte descriptif.

DECLARE @session_usr NCHAR(30);  
SET @session_usr = SESSION_USER;  
SELECT 'This session''s current user is: '+ @session_usr;  
GO  

Voici les résultats obtenus lorsque l'utilisateur de la session est Surya :

--------------------------------------------------------------
This session's current user is: Surya

(1 row(s) affected)

B. Utilisation de SESSION_USER avec les contraintes DEFAULT

L'exemple suivant crée une table qui utilise SESSION_USER en tant que contrainte DEFAULT pour obtenir le nom de la personne qui enregistre la réception d'une livraison.

USE AdventureWorks2022;  
GO  
CREATE TABLE deliveries3  
(  
 order_id INT IDENTITY(5000, 1) NOT NULL,  
 cust_id  INT NOT NULL,  
 order_date SMALLDATETIME NOT NULL DEFAULT GETDATE(),  
 delivery_date SMALLDATETIME NOT NULL DEFAULT   
    DATEADD(dd, 10, GETDATE()),  
 received_shipment NCHAR(30) NOT NULL DEFAULT SESSION_USER  
);  
GO  

Les enregistrements ajoutés à la table seront marqués par le nom d'utilisateur de l'utilisateur en cours. Dans cet exemple, Wanida, Sylvester et Alejandro vérifient la réception des livraisons. Une émulation est possible en changeant de contexte utilisateur à l'aide de l'instruction EXECUTE AS.

EXECUTE AS USER = 'Wanida'  
INSERT deliveries3 (cust_id)  
VALUES (7510);  
INSERT deliveries3 (cust_id)  
VALUES (7231);  
REVERT;  
EXECUTE AS USER = 'Sylvester'  
INSERT deliveries3 (cust_id)  
VALUES (7028);  
REVERT;  
EXECUTE AS USER = 'Alejandro'  
INSERT deliveries3 (cust_id)  
VALUES (7392);  
INSERT deliveries3 (cust_id)  
VALUES (7452);  
REVERT;  
GO  

La requête suivante sélectionne toutes les informations de la table deliveries3.

SELECT order_id AS 'Order #', cust_id AS 'Customer #',   
   delivery_date AS 'When Delivered', received_shipment   
   AS 'Received By'  
FROM deliveries3  
ORDER BY order_id;  
GO  

Voici le jeu de résultats.

Order #   Customer #  When Delivered       Received By
--------  ----------  -------------------  -----------
5000      7510        2005-03-16 12:02:14  Wanida
5001      7231        2005-03-16 12:02:14  Wanida
5002      7028        2005-03-16 12:02:14  Sylvester
5003      7392        2005-03-16 12:02:14  Alejandro
5004      7452        2005-03-16 12:02:14  Alejandro

(5 row(s) affected)

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

C. Utilisation de SESSION_USER pour obtenir le nom d’utilisateur de la session en cours

L’exemple suivant renvoie l’utilisateur de la session en cours.

SELECT SESSION_USER;  

Voir aussi

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
Fonctions système (Transact-SQL)
USER (Transact-SQL)
USER_NAME (Transact-SQL)