USER_NAME (Transact-SQL)
Applies to:
SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Returns a database user name from a specified identification number.
Transact-SQL syntax conventions
Syntax
USER_NAME ( [ id ] )
Note
To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.
Arguments
id
Is the identification number associated with a database user. id is int. The parentheses are required.
Return Types
nvarchar(128)
Remarks
When id is omitted, the current user in the current context is assumed. If the parameter contains the word NULL will return NULL. When USER_NAME is called without specifying an id after an EXECUTE AS statement, USER_NAME returns the name of the impersonated user. If a Windows principal accesses the database by way of membership in a group, USER_NAME returns the name of the Windows principal instead of the group.
Note
Although the USER_NAME function is supported on Azure SQL Database, using Execute as with USER_NAME is not supported on Azure SQL Database.
Examples
A. Using USER_NAME
The following example returns the user name for user ID 13
.
SELECT USER_NAME(13);
GO
B. Using USER_NAME without an ID
The following example finds the name of the current user without specifying an ID.
SELECT USER_NAME();
GO
Here is the result set for a user that is a member of the sysadmin fixed server role.
------------------------------
dbo
(1 row(s) affected)
C. Using USER_NAME in the WHERE clause
The following example finds the row in sysusers
in which the name is equal to the result of applying the system function USER_NAME
to user identification number 1
.
SELECT name FROM sysusers WHERE name = USER_NAME(1);
GO
Here is the result set.
name
------------------------------
dbo
(1 row(s) affected)
D. Calling USER_NAME during impersonation with EXECUTE AS
The following example shows how USER_NAME
behaves during impersonation.
SELECT USER_NAME();
GO
EXECUTE AS USER = 'Zelig';
GO
SELECT USER_NAME();
GO
REVERT;
GO
SELECT USER_NAME();
GO
Here is the result set.
DBO
Zelig
DBO
Examples: Azure Synapse Analytics and Analytics Platform System (PDW)
E. Using USER_NAME without an ID
The following example finds the name of the current user without specifying an ID.
SELECT USER_NAME();
Here is the result set for a currently logged-in user.
------------------------------
User7
F. Using USER_NAME in the WHERE clause
The following example finds the row in sysusers
in which the name is equal to the result of applying the system function USER_NAME
to user identification number 1
.
SELECT name FROM sysusers WHERE name = USER_NAME(1);
Here is the result set.
name
------------------------------
User7
See Also
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
System Functions (Transact-SQL)
SYSTEM_USER (Transact-SQL)