다음을 통해 공유


SESSION_USER(Transact-SQL)

SESSION_USER는 현재 데이터베이스에 있는 현재 컨텍스트의 사용자 이름을 반환합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

SESSION_USER

반환 형식

nvarchar(128)

주의

SESSION_USER를 CREATE TABLE 또는 ALTER TABLE 문에서 DEFAULT 제약 조건으로 사용하거나 임의의 표준 함수로 사용합니다. 지정된 기본값이 없으면 SESSION_USER를 테이블에 삽입할 수 있습니다. 이 함수에는 인수가 필요하지 않습니다. SESSION_USER는 쿼리에서 사용할 수 있습니다.

컨텍스트 전환 후 SESSION_USER를 호출하면 가장된 컨텍스트의 사용자 이름이 반환됩니다.

1. SESSION_USER를 사용하여 현재 세션의 사용자 이름 반환

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

DECLARE @session_usr nchar(30);
SET @session_usr = SESSION_USER;
SELECT 'This session''s current user is: '+ @session_usr;
GO

다음은 세션 사용자가 Surya일 때의 결과 집합입니다.

--------------------------------------------------------------

This session's current user is: Surya

(1 row(s) affected)

2. DEFAULT 제약 조건으로 SESSION_USER 사용

다음 예에서는 배송물 수령을 기록하는 사람의 이름에 대한 DEFAULT 제약 조건으로 SESSION_USER를 사용하는 테이블을 만듭니다.

USE AdventureWorks2008R2;
GO
CREATE TABLE deliveries3
(
 order_id int IDENTITY(5000, 1) NOT NULL,
 cust_id  int NOT NULL,
 order_date smalldatetime NOT NULL DEFAULT GETDATE(),
 delivery_date smalldatetime NOT NULL DEFAULT 
    DATEADD(dd, 10, GETDATE()),
 received_shipment nchar(30) NOT NULL DEFAULT SESSION_USER
);
GO

테이블에 추가된 레코드에는 현재 사용자의 사용자 이름이 표시됩니다. 이 예에서 Wanida, Sylvester 및 Alejandro이 배송물 수령을 확인합니다. 이것은 EXECUTE AS를 통해 사용자 컨텍스트를 전환하여 에뮬레이트할 수 있습니다.

EXECUTE AS USER = 'Wanida'
INSERT deliveries3 (cust_id)
VALUES (7510);
INSERT deliveries3 (cust_id)
VALUES (7231);
REVERT
EXECUTE AS USER = 'Sylvester'
INSERT deliveries3 (cust_id)
VALUES (7028);
REVERT
EXECUTE AS USER = 'Alejandro'
INSERT deliveries3 (cust_id)
VALUES (7392);
INSERT deliveries3 (cust_id)
VALUES (7452);
REVERT
GO

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

SELECT order_id AS 'Order #', cust_id AS 'Customer #', 
   delivery_date AS 'When Delivered', received_shipment 
   AS 'Received By'
FROM deliveries3
ORDER BY order_id;
GO

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

Order # Customer # When Delivered Received By

-------- ---------- ------------------- -----------

5000 7510 2005-03-16 12:02:14 Wanida

5001 7231 2005-03-16 12:02:14 Wanida

5002 7028 2005-03-16 12:02:14 Sylvester

5003 7392 2005-03-16 12:02:14 Alejandro

5004 7452 2005-03-16 12:02:14 Alejandro

(5 row(s) affected)