SYSTEM_USER (Transact-SQL)

Consente di inserire in una tabella un valore fornito dal sistema per l'account di accesso corrente quando non è specificato alcun valore predefinito.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

SYSTEM_USER

Tipi restituiti

nchar

Osservazioni

È possibile utilizzare la funzione SYSTEM_USER in combinazione con i vincoli DEFAULT nelle istruzioni CREATE TABLE e ALTER TABLE, nonché come qualsiasi funzione standard.

Se il nome utente e il nome dell'account di accesso sono diversi, SYSTEM_USER restituisce il nome dell'account di accesso.

Se l'utente corrente è connesso a SQL Server tramite l'autenticazione di Windows, SYSTEM_USER restituisce il nome di identificazione dell'account di accesso di Windows nel formato: DOMAIN\user_login_name. Se invece è connesso a SQL Server tramite l'autenticazione di SQL Server, SYSTEM_USER restituisce il nome di identificazione dell'account di accesso di SQL Server, ad esempio WillisJo per un utente connesso come WillisJo.

SYSTEM_USER restituisce il nome del contesto di esecuzione corrente. Se l'istruzione EXECUTE AS è stata utilizzata per cambiare contesto, SYSTEM_USER restituirà il nome del contesto rappresentato.

Esempi

A. Utilizzo di SYSTEM_USER per recuperare il nome utente di sistema corrente

Nell'esempio seguente viene dichiarata una variabile char, il valore corrente di SYSTEM_USER viene archiviato nella variabile, quindi viene visualizzato il valore archiviato nella variabile.

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

Set di risultati:

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

(1 row(s) affected)

B. Utilizzo di SYSTEM_USER con vincoli DEFAULT

Nell'esempio seguente viene creata una tabella con SYSTEM_USER come vincolo DEFAULT per la colonna 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 query seguente consente di selezionare tutte le informazioni della tabella Sales_Tracking.

SELECT * FROM Sales_Tracking ORDER BY Rep_id;
GO

Set di risultati:

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)