Delen via


SESSION_USER (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database in Microsoft Fabric

SESSION_USER geeft de gebruikersnaam van de huidige context terug in de huidige database.

Transact-SQL syntaxis-conventies

Syntaxis

SESSION_USER  

Retourtypen

nvarchar(128)

Opmerkingen

Gebruik SESSION_USER met DEFAULT-constraints in de CREATE TABLE- of ALTER TABLE-instructies, of gebruik het als een standaardfunctie. SESSION_USER kan in een tabel worden ingevoegd wanneer er geen standaardwaarde is opgegeven. Deze functie heeft geen argumenten. SESSION_USER kan in queries worden gebruikt.

Als SESSION_USER wordt aangeroepen na een contextwisseling, geeft SESSION_USER de gebruikersnaam van de geïmporteerde context terug.

Voorbeelden

Eén. Met SESSION_USER de gebruikersnaam van de huidige sessie teruggeven

Het volgende voorbeeld verklaart een variabele als nchar, wijst de huidige waarde van SESSION_USER toe aan die variabele, en drukt vervolgens de variabele af met een tekstbeschrijving.

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

Dit is het resultaat dat wordt ingesteld wanneer de sessiegebruiker is Surya:

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

(1 row(s) affected)

B. Gebruik SESSION_USER met DEFAULT-beperkingen

Het volgende voorbeeld creëert een tabel die als DEFAULT beperking wordt gebruikt SESSION_USER voor de naam van de persoon die de ontvangst van een zending registreert.

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  

Records die aan de tabel worden toegevoegd, worden gestempeld met de gebruikersnaam van de huidige gebruiker. In dit voorbeeld, Wanida, Sylvester, en Alejandro verifieer de ontvangst van zendingen. Dit kan worden nagebootst door de gebruikerscontext te wisselen met behulp van 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  

De volgende query selecteert alle informatie uit de deliveries3 tabel.

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  

Hier is het resultatenoverzicht.

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)

Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)

C: Gebruik SESSION_USER om de gebruikersnaam van de huidige sessie terug te geven

Het volgende voorbeeld geeft de sessiegebruiker terug voor de huidige sessie.

SELECT SESSION_USER;  

Zie ook

ALTER TABLE (Transact-SQL)
MAAK TABEL AAN (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
Systeemfuncties (Transact-SQL)
GEBRUIKER (Transact-SQL)
USER_NAME (Transact-SQL)