CURRENT_USER (Transact-SQL)
Applies to:
SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
This function returns the name of the current user. This function is equivalent to USER_NAME()
.
Transact-SQL syntax conventions
Syntax
CURRENT_USER
Note
To view Transact-SQL syntax for SQL Server 2014 (12.x) and earlier versions, see Previous versions documentation.
Return types
sysname
Remarks
CURRENT_USER
returns the name of the current security context. If CURRENT_USER
executes after a call to EXECUTE AS
switches context, CURRENT_USER
will return the name of the impersonated context. If a Windows principal accessed the database by way of membership in a group, CURRENT_USER
will return the name of the Windows principal instead of the group name.
See SUSER_NAME (Transact-SQL) and SYSTEM_USER (Transact-SQL) to learn about how to return the login of the current user.
Examples
A. Using CURRENT_USER to return the current user name
This example returns the name of the current user.
SELECT CURRENT_USER;
GO
B. Using CURRENT_USER as a DEFAULT constraint
This example creates a table that uses CURRENT_USER
as a DEFAULT
constraint, for the order_person
column, on a sales row.
USE AdventureWorks2022;
GO
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'orders22')
DROP TABLE orders22;
GO
SET NOCOUNT ON;
CREATE TABLE orders22
(
order_id int IDENTITY(1000, 1) NOT NULL,
cust_id int NOT NULL,
order_date smalldatetime NOT NULL DEFAULT GETDATE(),
order_amt money NOT NULL,
order_person char(30) NOT NULL DEFAULT CURRENT_USER
);
GO
This example inserts a record in the table. The user named Wanida
executes these statements.
INSERT orders22 (cust_id, order_amt)
VALUES (5105, 577.95);
GO
SET NOCOUNT OFF;
GO
This query selects all information from the orders22
table.
SELECT * FROM orders22;
GO
Here is the result set.
order_id cust_id order_date order_amt order_person
----------- ----------- -------------------- ------------ ------------
1000 5105 2005-04-03 23:34:00 577.95 Wanida
(1 row(s) affected)
C. Using CURRENT_USER from an impersonated context
In this example, user Wanida
executes the following Transact-SQL code to impersonate user 'Arnalfo'.
SELECT CURRENT_USER;
GO
EXECUTE AS USER = 'Arnalfo';
GO
SELECT CURRENT_USER;
GO
REVERT;
GO
SELECT CURRENT_USER;
GO
Here is the result set.
Wanida
Arnalfo
Wanida
See also
USER_NAME (Transact-SQL)
SYSTEM_USER (Transact-SQL)
sys.database_principals (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
System Functions (Transact-SQL)