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)