Condividi tramite


SESSION_USER (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

SESSION_USER restituisce il nome utente del contesto corrente nel database corrente.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

SESSION_USER  

Tipi restituiti

nvarchar(128)

Osservazioni:

Utilizzare la funzione SESSION_USER con vincoli DEFAULT nell'istruzione CREATE TABLE o ALTER TABLE oppure come qualsiasi funzione standard. SESSION_USER può essere inserita in una tabella se non viene specificato alcun valore predefinito. Questa funzione non accetta argomenti e può essere utilizzata nelle query.

Se viene chiamata dopo uno scambio di contesto, la funzione SESSION_USER restituirà il nome utente del contesto rappresentato.

Esempi

R. Utilizzo di SESSION_USER per recuperare il nome utente della sessione corrente

Nell'esempio seguente viene dichiarata una variabile di tipo nchar, viene assegnato il valore corrente di SESSION_USER a tale variabile e quindi vengono restituite la variabile e una descrizione.

DECLARE @session_usr NCHAR(30);  
SET @session_usr = SESSION_USER;  
SELECT 'This session''s current user is: '+ @session_usr;  
GO  

Di seguito è riportato il set di risultati quando l'utente della sessione è Surya:

--------------------------------------------------------------
This session's current user is: Surya

(1 row(s) affected)

B. Utilizzo della funzione SESSION_USER con vincoli DEFAULT

Nell'esempio seguente viene creata una tabella che utilizza SESSION_USER come vincolo DEFAULT per il nome della persona che registra la ricezione di una spedizione.

USE AdventureWorks2022;  
GO  
CREATE TABLE deliveries3  
(  
 order_id INT IDENTITY(5000, 1) NOT NULL,  
 cust_id  INT NOT NULL,  
 order_date SMALLDATETIME NOT NULL DEFAULT GETDATE(),  
 delivery_date SMALLDATETIME NOT NULL DEFAULT   
    DATEADD(dd, 10, GETDATE()),  
 received_shipment NCHAR(30) NOT NULL DEFAULT SESSION_USER  
);  
GO  

I record aggiunti alla tabella verranno contrassegnati con il nome utente dell'utente corrente. In questo esempio la ricezione delle spedizioni viene verificata da Wanida, Sylvester e Alejandro. Questo scenario può essere simulato mediante uno scambio di contesto utente tramite EXECUTE AS.

EXECUTE AS USER = 'Wanida'  
INSERT deliveries3 (cust_id)  
VALUES (7510);  
INSERT deliveries3 (cust_id)  
VALUES (7231);  
REVERT;  
EXECUTE AS USER = 'Sylvester'  
INSERT deliveries3 (cust_id)  
VALUES (7028);  
REVERT;  
EXECUTE AS USER = 'Alejandro'  
INSERT deliveries3 (cust_id)  
VALUES (7392);  
INSERT deliveries3 (cust_id)  
VALUES (7452);  
REVERT;  
GO  

La query seguente consente di selezionare tutte le informazioni della tabella deliveries3.

SELECT order_id AS 'Order #', cust_id AS 'Customer #',   
   delivery_date AS 'When Delivered', received_shipment   
   AS 'Received By'  
FROM deliveries3  
ORDER BY order_id;  
GO  

Il set di risultati è il seguente.

Order #   Customer #  When Delivered       Received By
--------  ----------  -------------------  -----------
5000      7510        2005-03-16 12:02:14  Wanida
5001      7231        2005-03-16 12:02:14  Wanida
5002      7028        2005-03-16 12:02:14  Sylvester
5003      7392        2005-03-16 12:02:14  Alejandro
5004      7452        2005-03-16 12:02:14  Alejandro

(5 row(s) affected)

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

C: Uso di SESSION_USER per recuperare il nome utente della sessione corrente

Nell'esempio seguente viene restituito l'utente della sessione corrente.

SELECT SESSION_USER;  

Vedi anche

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