Condividi tramite


SYSTEM_USER (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)

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:

È 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 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'istruzione EXECUTE AS è stata utilizzata per cambiare contesto, SYSTEM_USER restituirà il nome del contesto rappresentato.

Non è possibile usare EXECUTE AS per SYSTEM_USER.

database SQL di Azure: l'istruzione SYSTEM_USER non supporta l'esecuzione usando un contesto di sicurezza rappresentato 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. 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 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 e Piattaforma di strumenti analitici (PDW)

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;  

Vedi anche

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
Funzioni di sistema (Transact-SQL)
USER (Transact-SQL)