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)