다음을 통해 공유


USER(Transact-SQL)

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

기본값이 지정되지 않은 경우에 현재 사용자의 데이터베이스 사용자 이름에 대해 시스템이 제공한 값을 테이블에 삽입할 수 있도록 허용합니다.

Transact-SQL 구문 표기 규칙

구문

USER  

반환 형식

nvarchar(128)

설명

USER는 USER_NAME 시스템 함수와 같은 기능을 제공합니다.

USER를 CREATE TABLE 또는 ALTER TABLE 문에서 DEFAULT 제약 조건으로 사용하거나 임의의 표준 함수로 사용합니다.

USER는 항상 현재 컨텍스트의 이름을 반환합니다. EXECUTE AS 문 다음에 USER를 호출하면 가장된 컨텍스트의 이름이 반환됩니다.

Windows 보안 주체가 그룹 멤버 자격으로 데이터베이스에 액세스하는 경우 USER는 그룹 이름 대신 Windows 보안 주체의 이름을 반환합니다.

예제

A. USER를 사용하여 데이터베이스 사용자 이름 반환

다음 예에서는 변수를 char로 선언하고 USER의 현재 값을 변수에 할당한 다음 텍스트 설명과 함께 변수를 인쇄합니다.

DECLARE @usr CHAR(30)  
SET @usr = user  
SELECT 'The current user''s database username is: '+ @usr  
GO  

결과 집합은 다음과 같습니다.

-----------------------------------------------------------------------  
The current user's database username is: dbo  
 
(1 row(s) affected)

B. DEFAULT 제약 조건으로 USER 사용

다음 예에서는 판매 행의 판매원에 대한 USER 제약 조건으로 DEFAULT를 사용하여 테이블을 만듭니다.

USE AdventureWorks2022;  
GO  
CREATE TABLE inventory22  
(  
 part_id INT IDENTITY(100, 1) NOT NULL,  
 description VARCHAR(30) NOT NULL,  
 entry_person VARCHAR(30) NOT NULL DEFAULT USER   
)  
GO  
INSERT inventory22 (description)  
VALUES ('Red pencil')  
INSERT inventory22 (description)  
VALUES ('Blue pencil')  
INSERT inventory22 (description)  
VALUES ('Green pencil')  
INSERT inventory22 (description)  
VALUES ('Black pencil')  
INSERT inventory22 (description)  
VALUES ('Yellow pencil')  
GO  

다음은 inventory22 테이블에서 모든 정보를 선택하는 쿼리입니다.

SELECT * FROM inventory22 ORDER BY part_id;  
GO  

결과 집합은 다음과 같습니다(entry-person 값 참고).

part_id     description                    entry_person
----------- ------------------------------ -------------------------
100         Red pencil                     dbo
101         Blue pencil                    dbo
102         Green pencil                   dbo
103         Black pencil                   dbo
104         Yellow pencil                  dbo
 
(5 row(s) affected)

C. EXECUTE AS와 함께 USER 사용

다음 예에서는 가장된 세션 내부에서 호출된 USER의 동작을 보여 줍니다.

SELECT USER;  
GO  
EXECUTE AS USER = 'Mario';  
GO  
SELECT USER;  
GO  
REVERT;  
GO  
SELECT USER;  
GO  

결과 집합은 다음과 같습니다.

DBO
Mario
DBO

참고 항목

ALTER TABLE(Transact-SQL)
CREATE TABLE(Transact-SQL)
CURRENT_TIMESTAMP(Transact-SQL)
CURRENT_USER(Transact-SQL)
보안 함수(Transact-SQL)
SESSION_USER(Transact-SQL)
SYSTEM_USER(Transact-SQL)
USER_NAME(Transact-SQL)