Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Endpoint di analisi SQL in Microsoft Fabric
Magazzino in Microsoft Fabric
Database SQL in Microsoft Fabric
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:
Usa SESSION_USER con DEFAULT vincoli nelle CREATE TABLE istruzioni op, ALTER TABLE oppure usalo come 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. Uso SESSION_USER con DEFAULT vincoli
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
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;