SYSTEM_USER (Transact-SQL)

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

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

語法

SYSTEM_USER

傳回類型

nchar

備註

您可以在 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 便會傳回模擬內容的名稱。

範例

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. 搭配 DEFAULT 條件約束來使用 SYSTEM_USER

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

USE AdventureWorks;
GO
CREATE TABLE 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_Tracking (Rep_id)
VALUES (151)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (293, '5/15/98')
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (27882, '6/20/98')
INSERT Sales_Tracking (Rep_id)
VALUES (21392)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (24283, '11/03/98')
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)