USER_NAME(Transact-SQL)
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스
지정된 ID 번호 또는 현재 사용자 이름에서 데이터베이스 사용자 이름을 반환합니다.
구문
USER_NAME ( [ ID ] )
인수
ID
sys.database_principals 나열된 데이터베이스 사용자와 연결된 ID 번호입니다. ID가 int입니다. 괄호가 필요합니다.
반환 형식
nvarchar(128)
설명
ID를 생략하면 현재 컨텍스트의 현재 사용자가 가정됩니다. 매개 변수에 단어가 NULL
포함되어 있으면 .가 USER_NAME
반환 NULL
됩니다. USER_NAME
문 USER_NAME
뒤 EXECUTE AS
의 ID를 지정하지 않고 호출되면 가장된 사용자의 이름을 반환합니다. Windows 보안 주체가 그룹의 멤버 자격을 통해 데이터베이스에 액세스하는 경우 그룹 USER_NAME
대신 Windows 보안 주체의 이름을 반환합니다.
함수는 USER_NAME()
Azure SQL Database에서 지원되지만 Azure SQL Database에서는 사용 EXECUTE AS USER = USER_NAME(n)
이 지원되지 않습니다.
예제
A. USER_NAME()를 사용하여 사용자 ID 식별
다음 예제에서는 sys.database_principals 나열된 대로 사용자 ID13
의 사용자 이름을 반환합니다.
SELECT USER_NAME(13);
GO
B. ID 없이 USER_NAME 사용
다음 예에서는 ID를 지정하지 않고 현재 사용자의 이름을 찾습니다.
SELECT USER_NAME();
GO
sysadmin 고정 서버 역할의 멤버인 사용자의 경우 결과 집합은 다음과 같습니다.
dbo
C. WHERE 절에서 USER_NAME 사용
다음 예제에서는 이름이 사용자 ID 번호1
에 sys.database_principals
시스템 함수 USER_NAME
를 적용한 결과와 같은 행을 찾습니다.
SELECT name FROM sys.database_principals WHERE name = USER_NAME(1);
GO
결과 집합은 다음과 같습니다.
name
------------------------------
dbo
(1 row(s) affected)
D. EXECUTE AS를 사용하여 가장하는 동안 USER_NAME 호출
다음 예에서는 가장이 진행되는 동안의 USER_NAME
작동 방식을 보여 줍니다.
EXECUTE AS
는 현재 Microsoft Fabric에서 지원되지 않습니다.
주의
테스트할 EXECUTE AS
때는 항상 따라야 할 스크립트를 작성 REVERT
합니다.
SELECT USER_NAME();
GO
EXECUTE AS USER = 'Zelig';
GO
SELECT USER_NAME();
GO
REVERT;
GO
SELECT USER_NAME();
GO
결과 집합은 다음과 같습니다.
-------------
dbo
-------------
Zelig
-------------
dbo
예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)
E. ID 없이 USER_NAME 사용
다음 예에서는 ID를 지정하지 않고 현재 사용자의 이름을 찾습니다.
SELECT USER_NAME();
현재 로그인한 사용자에 대한 결과 집합입니다.
User7
F. WHERE 절에서 USER_NAME 사용
다음 예에서는 sysusers
에서 USER_NAME
시스템 함수를 사용자 ID 번호 1
에 적용하는 결과와 이름이 동일한 행을 찾습니다.
SELECT name FROM sysusers WHERE name = USER_NAME(1);
결과 집합은 다음과 같습니다.
name
------------------------------
User7