Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

CURRENT_USER (Transact-SQL)

Applies To: SQL Server 2014, SQL Server 2016 Preview

Topic Status: Some information in this topic is preview and subject to change in future releases. Preview information describes new features or changes to existing features in Microsoft SQL Server 2016 Community Technology Preview 2 (CTP2).

Returns the name of the current user. This function is equivalent to USER_NAME().

Applies to: SQL Server (SQL Server 2008 through current version), Azure SQL Database, Azure SQL Data Warehouse Public Preview.

Topic link icon Transact-SQL Syntax Conventions

CURRENT_USER

CURRENT_USER returns the name of the current security context. If CURRENT_USER is executed 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, the name of the Windows principal will be returned instead of the name of the group.

To return the login of the current user, see SUSER_NAME (Transact-SQL) and SYSTEM_USER (Transact-SQL).

A. Using CURRENT_USER to return the current user name

The following example returns the name of the current user.

SELECT CURRENT_USER;
GO

B. Using CURRENT_USER as a DEFAULT constraint

The following example creates a table that uses CURRENT_USER as a DEFAULT constraint for the order_person column on a sales row.

USE AdventureWorks2012;
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

The following code inserts a record in the table. The user that is executing these statements is named Wanida.

INSERT orders22 (cust_id, order_amt)
VALUES (5105, 577.95);
GO
SET NOCOUNT OFF;
GO

The following 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 the following example, user Wanida executes the following Transact-SQL code.

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

Community Additions

ADD
Show:
© 2015 Microsoft