다음을 통해 공유


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 번호 또는 현재 사용자 이름에서 데이터베이스 사용자 이름을 반환합니다.

Transact-SQL 구문 표기 규칙

구문

USER_NAME ( [ ID ] )

인수

ID

sys.database_principals 나열된 데이터베이스 사용자와 연결된 ID 번호입니다. ID가 int입니다. 괄호가 필요합니다.

반환 형식

nvarchar(128)

설명

ID를 생략하면 현재 컨텍스트의 현재 사용자가 가정됩니다. 매개 변수에 단어가 NULL포함되어 있으면 .가 USER_NAME 반환 NULL됩니다. USER_NAMEUSER_NAMEEXECUTE 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 번호1sys.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