SYSTEM_USER (Transact-SQL)

Si applica a:SQL ServerAzureSQL Managed InstanceAzure Synapse Analytics

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

Convenzioni relative alla sintassi Transact-SQL

Sintassi

SYSTEM_USER  

Tipi restituiti

nvarchar(128)

Osservazioni:

Puoi usare la funzione SYSTEM_USER con DEFAULT vincoli nelle CREATE TABLE istruzioni 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 l'utente invece è connesso a SQL Server tramite l'autenticazione di SQL Server, SYSTEM_USER restituisce il nome dell'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'affermazione EXECUTE AS è stata usata per cambiare contesto, SYSTEM_USER restituisce il nome del contesto impersonato.

Non puoi EXECUTE AS fare un SYSTEM_USER.

database SQL di Azure: L'istruzione SYSTEM_USER non supporta l'esecuzione usando un contesto di sicurezza impersonato tramite EXECUTE AS.

Esempi

R. 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  

Il set di risultati è il seguente.

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

(1 row(s) affected)

B. Uso SYSTEM_USER con DEFAULT vincoli

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

SELECT * FROM Sales_Tracking ORDER BY Rep_id;  
GO  

Il set di risultati è il seguente.

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)

Esempi: Azure Synapse Analytics

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

L'esempio seguente restituisce il valore corrente di SYSTEM_USER.

SELECT SYSTEM_USER;