SESSION_USER (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

SESSION_USER gibt den Benutzernamen im Kontext der aktuellen Datenbank zurück.

Transact-SQL-Syntaxkonventionen

Syntax

SESSION_USER  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Rückgabetypen

nvarchar(128)

Hinweise

Verwenden Sie SESSION_USER mit DEFAULT-Einschränkungen in der CREATE TABLE- oder ALTER TABLE-Anweisung oder als beliebige Standardfunktion. SESSION_USER kann in eine Tabelle eingefügt werden, wenn kein Standardwert angegeben wird. Diese Funktion akzeptiert keine Argumente. SESSION_USER kann in Abfragen verwendet werden.

Wird SESSION_USER nach einem Kontextwechsel aufgerufen, gibt SESSION_USER den Benutzernamen des Kontexts zurück, dessen Identität angenommen wurde.

Beispiele

A. Verwenden von SESSION_USER zur Rückgabe des Benutzernamens der aktuellen Sitzung

Im folgenden Beispiel wird eine Variable als Datentyp nchar deklariert, ihr der aktuelle Wert von SESSION_USER zugewiesen und die Variable dann mit einer Textbeschreibung ausgegeben.

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

Wenn Surya Sitzungsbenutzer ist, sieht das Resultset folgendermaßen aus:

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

(1 row(s) affected)

B. Verwenden von SESSION_USER mit DEFAULT-Einschränkungen

Im folgenden Beispiel wird eine Tabelle erstellt, die SESSION_USER als DEFAULT-Einschränkung für den Namen der Person verwendet, die den Empfang einer Lieferung aufzeichnet.

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  

Der Tabelle hinzugefügte Datensätze werden mit dem Benutzernamen des aktuellen Benutzers versehen. Im folgenden Beispiel wird der Empfang von Lieferungen von Wanida, Sylvester und Alejandro überprüft. Dies kann durch Wechseln des Benutzerkontexts mithilfe von EXECUTE AS emuliert werden.

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  

In der folgenden Abfrage werden alle Informationen aus der deliveries3-Tabelle ausgewählt.

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 ist das Resultset.

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)

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

C: Verwenden von SESSION_USER zur Rückgabe des Benutzernamens der aktuellen Sitzung

Im folgenden Beispiel wird der Sitzungsbenutzer für die aktuelle Sitzung zurückgegeben.

SELECT SESSION_USER;  

Weitere Informationen

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
Systemfunktionen (Transact-SQL)
USER (Transact-SQL)
USER_NAME (Transact-SQL)