Partager via


SYSTEM_USER (Transact-SQL)

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

Permet, lorsqu'aucune valeur par défaut n'est spécifiée, d'insérer dans la table une valeur système à la place de la connexion actuelle.

Conventions de la syntaxe Transact-SQL

Syntaxe

SYSTEM_USER  

Types de retour

nvarchar(128)

Remarques

Vous pouvez utiliser la fonction SYSTEM_USER avec des contraintes DEFAULT dans les instructions CREATE TABLE et ALTER TABLE. Vous pouvez aussi l'utiliser comme n'importe quelle fonction standard.

Si le nom d'utilisateur et le nom de connexion sont différents, SYSTEM_USER retourne le nom de connexion.

Si l’utilisateur actuel s’est connecté à SQL Server à l’aide de l’authentification Windows, SYSTEM_USER retourne le nom d’identification de la connexion Windows, sous la forme suivante : DOMAIN\nom_connexion_utilisateur. Toutefois, s'il s'est connecté à SQL Server à l'aide de l'authentification SQL Server, SYSTEM_USER retourne le nom d'identification de connexion SQL Server, par exemple WillisJo si l'utilisateur s'est connecté en tant que WillisJo.

SYSTEM_USER retourne le nom du contexte qui s'exécute actuellement. Si l'instruction EXECUTE AS a été utilisée pour changer de contexte, SYSTEM_USER retourne le nom du contexte emprunté.

Vous ne pouvez pas utiliser EXECUTE AS en tant que SYSTEM_USER.

Base de données Azure SQL : l'instruction SYSTEM_USER ne prend pas en charge l'exécution avec un contexte de sécurité représenté par la clause EXECUTE AS.

Exemples

R. Utilisation de SYSTEM_USER pour retourner le nom d'utilisateur système actuel

L'exemple suivant déclare une variable char, stocke la valeur actuelle de SYSTEM_USER dans la variable, puis imprime la valeur stockée dans la variable.

DECLARE @sys_usr CHAR(30);  
SET @sys_usr = SYSTEM_USER;  
SELECT 'The current system user is: '+ @sys_usr;  
GO  

Voici le jeu de résultats.

----------------------------------------------------------
The current system user is: WillisJo

(1 row(s) affected)

B. Utilisation de SYSTEM_USER avec les contraintes DEFAULT

L'exemple suivant crée une table avec SYSTEM_USER en tant que contrainte DEFAULT pour la colonne SRep_tracking_user.

USE AdventureWorks2022;  
GO  
CREATE TABLE Sales.Sales_Tracking  
(  
    Territory_id INT IDENTITY(2000, 1) NOT NULL,  
    Rep_id INT NOT NULL,  
    Last_sale DATETIME NOT NULL DEFAULT GETDATE(),  
    SRep_tracking_user VARCHAR(30) NOT NULL DEFAULT SYSTEM_USER  
);  
GO  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (151);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (293, '19980515');  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (27882, '19980620');  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (21392);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (24283, '19981130');  
GO  

La requête suivante permet de sélectionner toutes les informations de la table Sales_Tracking :

SELECT * FROM Sales_Tracking ORDER BY Rep_id;  
GO  

Voici le jeu de résultats.

Territory_id Rep_id Last_sale            SRep_tracking_user
-----------  ------ -------------------- ------------------
2000         151    Mar 4 1998 10:36AM   ArvinDak
2001         293    May 15 1998 12:00AM  ArvinDak
2003         21392  Mar 4 1998 10:36AM   ArvinDak
2004         24283  Nov 3 1998 12:00AM   ArvinDak
2002         27882  Jun 20 1998 12:00AM  ArvinDak
 
(5 row(s) affected)

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

C. Utilisation de SYSTEM_USER pour retourner le nom d'utilisateur système actuel

L’exemple suivant renvoie la valeur actuelle de SYSTEM_USER.

SELECT SYSTEM_USER;  

Voir aussi

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)
USER (Transact-SQL)