SESSION_USER (Transact-SQL)

SESSION_USER 會傳回目前資料庫中目前內容的使用者名稱。

主題連結圖示Transact-SQL 語法慣例

語法

SESSION_USER

傳回類型

nvarchar(128)

備註

請在 CREATE TABLE 或 ALTER TABLE 陳述式中,搭配 DEFAULT 條件約束使用 SESSION_USER,或者將它作為任何標準函數使用。如果未指定預設值,可將 SESSION_USER 插入資料表中。這個函數沒有引數。SESSION_USER 可用於查詢。

如果 SESSION_USER 是在內容切換後面呼叫,SESSION_USER 便會傳回模擬內容的使用者名稱。

範例

A. 利用 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)

B. 搭配 DEFAULT 條件約束來使用 SESSION_USER

下列範例會建立一份資料表,針對記錄出貨回條者的名稱,利用 SESSION_USER 作為 DEFAULT 條件約束。

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、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)