Freigeben über


SESSION_USER (Transact-SQL)

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

Themenlink (Symbol)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, der Variablen wird der aktuelle Wert von SESSION_USER zugewiesen und sie wird 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 AdventureWorks2008R2;
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)