적용 대상:SQL 서버
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric
의 SQL 분석 엔드포인트Microsoft Fabric
의 웨어하우스Microsoft Fabric의 SQL 데이터베이스
지정된 ID 번호 또는 현재 사용자 이름에서 데이터베이스 사용자 이름을 반환합니다.
구문
USER_NAME ( [ ID ] )
인수
ID
sys.database_principals 나열된 데이터베이스 사용자와 연결된 ID 번호입니다. ID가 int입니다. 괄호가 필요합니다.
반환 형식
nvarchar(128)
설명
ID를 생략하면 현재 컨텍스트의 현재 사용자가 가정됩니다. 매개 변수에 단어가 NULL포함되어 있으면 .가 USER_NAME 반환 NULL됩니다.
USER_NAME 문 뒤 EXECUTE AS 의 IDUSER_NAME지정하지 않고 호출되면 가장된 사용자의 이름을 반환합니다. 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 번호sys.database_principals에 USER_NAME시스템 함수 1 를 적용한 결과와 같은 행을 찾습니다.
SELECT name FROM sys.database_principals WHERE name = USER_NAME(1);
GO
결과 집합은 다음과 같습니다.
name
------------------------------
dbo
(1 row(s) affected)
D. 사칭 중에 USER_NAME에게 전화하세요 EXECUTE AS
다음 예에서는 가장이 진행되는 동안의 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
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