USER_NAME(Transact-SQL)

적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPlatform System(PDW) SQL 분석 엔드포인트

지정된 ID 번호 또는 현재 사용자 이름에서 데이터베이스 사용자 이름을 반환합니다.

Transact-SQL 구문 표기 규칙

Syntax

USER_NAME ( [ ID ] )

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

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