SESSION_USER (Transact-SQL)
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 weist keine Argumente auf. 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 AdventureWorks2012;
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
Dies 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)
Siehe auch
Verweis
CURRENT_TIMESTAMP (Transact-SQL)