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 AdventureWorks
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
, SMacrae
및 AbolrousHazem
이 배송물 수령을 확인합니다. 이것은 EXECUTE AS
를 통해 사용자 컨텍스트를 전환하여 에뮬레이트할 수 있습니다.
EXECUTE AS USER = 'Wanida'
INSERT deliveries3 (cust_id)
VALUES (7510)
INSERT deliveries3 (cust_id)
VALUES (7231)
REVERT
EXECUTE AS USER = 'SMacrae'
INSERT deliveries3 (cust_id)
VALUES (7028)
REVERT
EXECUTE AS USER = 'AbolrousHazem'
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 SMacrae
5003 7392 2005-03-16 12:02:14 AbolrousHazem
5004 7452 2005-03-16 12:02:14 AbolrousHazem
(5 row(s) affected)
참고 항목
참조
ALTER TABLE(Transact-SQL)
CREATE TABLE(Transact-SQL)
CURRENT_TIMESTAMP(Transact-SQL)
CURRENT_USER(Transact-SQL)
SYSTEM_USER(Transact-SQL)
시스템 함수(Transact-SQL)
USER(Transact-SQL)
USER_NAME(Transact-SQL)