SYSTEM_USER (Transact-SQL)
适用于:SQL Server Azure SQL 托管实例 Azure Synapse Analytics Analytics 平台系统(PDW)
当未指定默认值时,允许将系统为当前登录名提供的值插入表中。
语法
SYSTEM_USER
返回类型
nvarchar(128)
注解
您可以在 CREATE TABLE 和 ALTER TABLE 语句中将 SYSTEM_USER 函数与 DEFAULT 约束一起使用。 还可以将此函数用作任意标准函数。
如果用户名与登录名不同,则 SYSTEM_USER 返回登录名。
如果当前用户使用 Windows 身份验证登录到 SQL Server,则 SYSTEM_USER 返回如下形式的 Windows 登录标识名称:DOMAIN\user_login_name 。 但是,如果当前用户使用 SQL Server 身份验证登录到 SQL Server,则 SYSTEM_USER 返回 SQL Server 登录标识名称,例如为作为 WillisJo
登录的用户返回 WillisJo
。
SYSTEM_USER 返回当前执行的上下文的名称。 如果已使用 EXECUTE AS 语句进行上下文切换,则 SYSTEM_USER 将返回模拟的上下文的名称。
执行身份不能为 SYSTEM_USER。
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)