SYSTEM_USER(Transact-SQL)
적용 대상: SQL Server Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
기본값이 지정되지 않은 경우에 현재 로그인에 대해 시스템이 제공한 값을 테이블에 삽입할 수 있도록 허용합니다.
구문
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)