SESSION_USER (Transact-SQL)
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
SESSION_USER 會傳回目前資料庫中目前內容的使用者名稱。
語法
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. 使用 SESSION_USER 搭配 DEFAULT 條件約束
下列範例會建立一份資料表,針對記錄出貨回條者的名稱,利用 SESSION_USER
作為 DEFAULT
條件約束。
USE AdventureWorks2022;
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)
範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
C:使用 SESSION_USER 傳回目前工作階段的使用者名稱
下列範例會傳回目前工作階段的工作階段使用者。
SELECT SESSION_USER;
另請參閱
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)