分享方式:


SYSTEM_USER (Transact-SQL)

適用於:SQL Server Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

如果未指定預設值,則可將系統提供的目前登入值插入資料表中。

Transact-SQL 語法慣例

語法

SYSTEM_USER  

傳回型別

nvarchar(128)

備註

您可以在 CREATE TABLE 和 ALTER TABLE 陳述式中,搭配 DEFAULT 條件約束使用 SYSTEM_USER 函數。 您也可以把它當作任何標準函數使用。

如果使用者名稱和登入名稱不同,SYSTEM_USER 便會傳回登入名稱。

如果目前使用者是使用 Windows 驗證登入 SQL Server,SYSTEM_USER 便會傳回格式為 DOMAIN\user_login_name 的 Windows 登入識別名稱。 不過,如果目前使用者是利用 SQL Server 驗證登入 SQL Server,SYSTEM_USER 便會傳回 SQL Server 登入識別名稱,例如,以 WillisJo 登入的使用者,就傳回 WillisJo

SYSTEM_USER 會傳回目前執行內容的名稱。 如果 EXECUTE AS 陳述式已用來切換內容,SYSTEM_USER 便會傳回模擬內容的名稱。

您無法對 SYSTEM_USER 執行 EXECUTE AS。

Azure SQL 資料庫:SYSTEM_USER 語句不支援透過 EXECUTE AS 使用仿真的安全性內容執行。

範例

A. 利用 SYSTEM_USER 傳回目前系統使用者名稱

下列範例會宣告一個 char 變數,將 SYSTEM_USER 的目前值儲存在變數中,然後再列印儲存在變數中的值。

DECLARE @sys_usr CHAR(30);  
SET @sys_usr = SYSTEM_USER;  
SELECT 'The current system user is: '+ @sys_usr;  
GO  

結果集如下所示。

----------------------------------------------------------
The current system user is: WillisJo

(1 row(s) affected)

B. 使用 SYSTEM_USER 搭配 DEFAULT 條件約束

下列範例會建立一份資料表,將 SYSTEM_USER 做為 DEFAULT 資料行的 SRep_tracking_user 條件約束。

USE AdventureWorks2022;  
GO  
CREATE TABLE Sales.Sales_Tracking  
(  
    Territory_id INT IDENTITY(2000, 1) NOT NULL,  
    Rep_id INT NOT NULL,  
    Last_sale DATETIME NOT NULL DEFAULT GETDATE(),  
    SRep_tracking_user VARCHAR(30) NOT NULL DEFAULT SYSTEM_USER  
);  
GO  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (151);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (293, '19980515');  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (27882, '19980620');  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (21392);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (24283, '19981130');  
GO  

下列查詢會選取 Sales_Tracking 資料表中的所有資訊:

SELECT * FROM Sales_Tracking ORDER BY Rep_id;  
GO  

結果集如下所示。

Territory_id Rep_id Last_sale            SRep_tracking_user
-----------  ------ -------------------- ------------------
2000         151    Mar 4 1998 10:36AM   ArvinDak
2001         293    May 15 1998 12:00AM  ArvinDak
2003         21392  Mar 4 1998 10:36AM   ArvinDak
2004         24283  Nov 3 1998 12:00AM   ArvinDak
2002         27882  Jun 20 1998 12:00AM  ArvinDak
 
(5 row(s) affected)

範例:Azure Synapse Analytics 和 Analytics Platform System (PDW)

C. 利用 SYSTEM_USER 傳回目前系統使用者名稱

下列範例會傳回 SYSTEM_USER 目前的值。

SELECT SYSTEM_USER;  

另請參閱

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
系統函數 (Transact-SQL)
USER (Transact-SQL)