Partager via


SYSTEM_USER (Transact-SQL)

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.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

SYSTEM_USER

Type des valeurs renvoyées

nchar

Notes

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\user_login_name. 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é.

Exemples

A. 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 l'ensemble des 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 AdventureWorks;
GO
CREATE TABLE 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_Tracking (Rep_id)
VALUES (151)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (293, '5/15/98')
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (27882, '6/20/98')
INSERT Sales_Tracking (Rep_id)
VALUES (21392)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (24283, '11/03/98')
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 l'ensemble des 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)