SESSION_USER (Transact-SQL)
SESSION_USER returns the user name of the current context in the current database.
Transact-SQL Syntax Conventions
Syntax
SESSION_USER
Return Types
nvarchar(128)
Remarks
Use SESSION_USER with DEFAULT constraints in either the CREATE TABLE or ALTER TABLE statements, or use it as any standard function. SESSION_USER can be inserted into a table when no default value is specified. This function takes no arguments. SESSION_USER can be used in queries.
If SESSION_USER is called after a context switch, SESSION_USER will return the user name of the impersonated context.
Examples
A. Using SESSION_USER to return the user name of the current session
The following example declares a variable as nchar
, assigns the current value of SESSION_USER
to that variable, and then prints the variable with a text description.
DECLARE @session_usr nchar(30);
SET @session_usr = SESSION_USER;
SELECT 'This session''s current user is: '+ @session_usr;
GO
This is the result set when the session user is Surya
:
--------------------------------------------------------------
This session's current user is: Surya
(1 row(s) affected)
B. Using SESSION_USER with DEFAULT constraints
The following example creates a table that uses SESSION_USER
as a DEFAULT
constraint for the name of the person who records receipt of a shipment.
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
Records added to the table will be stamped with the user name of the current user. In this example, Wanida
, SMacrae
, and AbolrousHazem
verify receipt of shipments. This can be emulated by switching user context by using EXECUTE AS
.
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
The following query selects all information from the deliveries3
table.
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
Here is the result set.
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)
See Also
Reference
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
System Functions (Transact-SQL)
USER (Transact-SQL)
USER_NAME (Transact-SQL)