SESSION_USER (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
SESSION_USER gibt den Benutzernamen im Kontext der aktuellen Datenbank zurück.
Transact-SQL-Syntaxkonventionen
Syntax
SESSION_USER
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)