Share via


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

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

USE AdventureWorks2012;
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)

請參閱

參考

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)