다음을 통해 공유


SYSTEM_USER(Transact-SQL)

적용 대상: SQL Server Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

기본값이 지정되지 않은 경우에 현재 로그인에 대해 시스템이 제공한 값을 테이블에 삽입할 수 있도록 허용합니다.

Transact-SQL 구문 표기 규칙

구문

SYSTEM_USER  

반환 형식

nvarchar(128)

설명

CREATE TABLE 및 ALTER TABLE 문에서 SYSTEM_USER 함수를 DEFAULT 제약 조건으로 사용할 수 있습니다. 이 함수를 표준 함수로 사용할 수도 있습니다.

사용자 이름과 로그인 이름이 다르면 SYSTEM_USER가 로그인 이름을 반환합니다.

현재 사용자가 Windows 인증을 사용하여 SQL Server에 로그인하면 SYSTEM_USER는 Windows 로그인 ID 이름을 다음과 같은 형식으로 반환합니다. DOMAIN\user_login_name. 하지만 현재 사용자가 SQL Server 인증을 사용하여 SQL Server에 로그인한 경우에는 SYSTEM_USER가 SQL Server 로그인 ID 이름을 반환합니다. 예를 들어 WillisJo로 로그인한 사용자의 경우에는 WillisJo를 반환합니다.

SYSTEM_USER는 현재 실행 중인 컨텍스트의 이름을 반환합니다. EXECUTE AS 문이 컨텍스트를 전환하는 데 사용된 경우에는 SYSTEM_USER가 가장된 컨텍스트의 이름을 반환합니다.

SYSTEM_USER로 실행할 수 없습니다.

Azure SQL Database: SYSTEM_USER 문은 EXECUTE AS를 통해 가장된 보안 컨텍스트를 사용하는 실행을 지원하지 않습니다.

예제

A. SYSTEM_USER를 사용하여 현재 시스템 사용자 이름 반환

다음 예에서는 char 변수를 선언하고 변수에 SYSTEM_USER의 현재 값을 저장한 다음에 변수에 저장된 값을 출력합니다.

DECLARE @sys_usr CHAR(30);  
SET @sys_usr = SYSTEM_USER;  
SELECT 'The current system user is: '+ @sys_usr;  
GO  

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

----------------------------------------------------------
The current system user is: WillisJo

(1 row(s) affected)

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

다음 예에서는 SYSTEM_USER 열에 대한 DEFAULT 제약 조건으로 SRep_tracking_user를 사용하는 테이블을 만듭니다.

USE AdventureWorks2022;  
GO  
CREATE TABLE Sales.Sales_Tracking  
(  
    Territory_id INT IDENTITY(2000, 1) NOT NULL,  
    Rep_id INT NOT NULL,  
    Last_sale DATETIME NOT NULL DEFAULT GETDATE(),  
    SRep_tracking_user VARCHAR(30) NOT NULL DEFAULT SYSTEM_USER  
);  
GO  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (151);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (293, '19980515');  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (27882, '19980620');  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (21392);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (24283, '19981130');  
GO  

다음 쿼리는 Sales_Tracking 테이블에서 모든 정보를 선택합니다.

SELECT * FROM Sales_Tracking ORDER BY Rep_id;  
GO  

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

Territory_id Rep_id Last_sale            SRep_tracking_user
-----------  ------ -------------------- ------------------
2000         151    Mar 4 1998 10:36AM   ArvinDak
2001         293    May 15 1998 12:00AM  ArvinDak
2003         21392  Mar 4 1998 10:36AM   ArvinDak
2004         24283  Nov 3 1998 12:00AM   ArvinDak
2002         27882  Jun 20 1998 12:00AM  ArvinDak
 
(5 row(s) affected)

예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)

C. SYSTEM_USER를 사용하여 현재 시스템 사용자 이름 반환

다음 예에서는 SYSTEM_USER의 현재 값을 반환합니다.

SELECT SYSTEM_USER;  

참고 항목

ALTER TABLE(Transact-SQL)
CREATE TABLE(Transact-SQL)
CURRENT_TIMESTAMP(Transact-SQL)
CURRENT_USER(Transact-SQL)
SESSION_USER(Transact-SQL)
시스템 함수(Transact-SQL)
USER(Transact-SQL)