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)