SESSION_USER(Transact-SQL)
SESSION_USER는 현재 데이터베이스에 있는 현재 컨텍스트의 사용자 이름을 반환합니다.
구문
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)