CURRENT_USER (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsEndpoint di analisi SQL in Microsoft FabricMagazzino in Microsoft FabricDatabase SQL in Microsoft Fabric

Questa funzione restituisce il nome dell'utente corrente ed equivale a USER_NAME().

Convenzioni relative alla sintassi Transact-SQL

Sintassi

CURRENT_USER  

Tipi restituiti

sysname

Osservazioni:

CURRENT_USER restituisce il nome del contesto di protezione corrente. Se si esegue CURRENT_USER dopo una chiamata a EXECUTE AS per cambiare contesto, CURRENT_USER restituirà il nome del contesto rappresentato. Se un'entità di Windows ha effettuato l'accesso al database in base all'appartenenza a un gruppo, CURRENT_USER restituisce il nome dell'entità di Windows anziché il nome del gruppo.

Per informazioni su come restituire l'account di accesso dell'utente corrente, vedere SUSER_NAME (Transact-SQL) e SYSTEM_USER (Transact-SQL).

Esempi

R. Utilizzo di CURRENT_USER per restituire il nome dell'utente corrente

Questo esempio restituisce il nome dell'utente corrente.

SELECT CURRENT_USER;  
GO  

B. Usare CURRENT_USER come DEFAULT vincolo

Questo esempio crea una tabella che usa CURRENT_USER come vincolo DEFAULT per la colonna order_person di una riga di dati sulle vendite.

USE AdventureWorks2022;  
GO  
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES  
      WHERE TABLE_NAME = 'orders22')  
   DROP TABLE orders22;  
GO  
SET NOCOUNT ON;  
CREATE TABLE orders22  
(  
order_id int IDENTITY(1000, 1) NOT NULL,
cust_id  int NOT NULL,
order_date smalldatetime NOT NULL DEFAULT GETDATE(),
order_amt money NOT NULL,
order_person char(30) NOT NULL DEFAULT CURRENT_USER
);  
GO  

Questo esempio inserisce un record nella tabella. Queste istruzioni vengono eseguite dall'utente denominato Wanida.

INSERT orders22 (cust_id, order_amt)  
VALUES (5105, 577.95);  
GO  
SET NOCOUNT OFF;  
GO  

Questa query consente di selezionare tutte le informazioni della tabella orders22.

SELECT * FROM orders22;  
GO  

Il set di risultati è il seguente.

order_id    cust_id     order_date           order_amt    order_person
----------- ----------- -------------------- ------------ ------------
1000        5105        2005-04-03 23:34:00  577.95       Wanida
  
(1 row(s) affected)

C. Utilizzo di CURRENT_USER da un contesto rappresentato

In questo esempio l'utente Wanida esegue il codice Transact-SQL seguente per rappresentare l'utente 'Arnalfo'.

SELECT CURRENT_USER;  
GO  
EXECUTE AS USER = 'Arnalfo';  
GO  
SELECT CURRENT_USER;  
GO  
REVERT;  
GO  
SELECT CURRENT_USER;  
GO  

Il set di risultati è il seguente.

Wanida
Arnalfo
Wanida