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 AdventureWorks
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
, SMacrae
und AbolrousHazem
überprüft. Dies kann durch Wechseln des Benutzerkontextes 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 = 'SMacrae'
INSERT deliveries3 (cust_id)
VALUES (7028)
REVERT
EXECUTE AS USER = 'AbolrousHazem'
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 SMacrae
5003 7392 2005-03-16 12:02:14 AbolrousHazem
5004 7452 2005-03-16 12:02:14 AbolrousHazem
(5 row(s) affected)
Siehe auch
Verweis
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)