USER_NAME (Transact-SQL)

根据指定的标识号返回数据库用户名。

主题链接图标 Transact-SQL 语法约定

语法

USER_NAME ( [ id ] )

参数

  • id
    与数据库用户关联的标识号。 id的数据类型为 int。 需要使用括号。

返回类型

nvarchar(256)

注释

省略 id 时,则假定为当前上下文中的当前用户。 如果此参数包含词 NULL,则将返回 NULL。如果在 EXECUTE AS 语句之后调用 USER_NAME,但未指定 id,则 USER_NAME 将返回模拟用户的名称。 如果 Windows 主体通过某组中的成员身份访问数据库,则 USER_NAME 将返回 Windows 主体的名称,而不是该组的名称。

示例

A.使用 USER_NAME

以下示例将返回用户 ID 为 13 的用户名。

SELECT USER_NAME(13);
GO

B.使用不指定 ID 的 USER_NAME

以下示例在不指定 ID 的情况下查找当前用户的名称。

SELECT USER_NAME();
GO

下面是作为 sysadmin 固定服务器角色成员的用户的结果集。

------------------------------

dbo

(1 row(s) affected)

C.在 WHERE 子句中使用 USER_NAME

以下示例在 sysusers 中查找行,该行的名称与将 USER_NAME 系统函数应用于用户标识号 1 而得出的结果相同。

SELECT name FROM sysusers WHERE name = USER_NAME(1);
GO

下面是结果集:

name

------------------------------

dbo

(1 row(s) affected)

D.在使用 EXECUTE AS 的模拟过程中调用 USER_NAME

以下示例显示模拟过程中 USER_NAME 的行为方式。

SELECT USER_NAME();
GO
EXECUTE AS USER = 'Zelig';
GO
SELECT USER_NAME();
GO
REVERT;
GO
SELECT USER_NAME();
GO

下面是结果集:

DBO

Zelig

DBO

请参阅

参考

ALTER TABLE (Transact-SQL)

CREATE TABLE (Transact-SQL)

CURRENT_TIMESTAMP (Transact-SQL)

CURRENT_USER (Transact-SQL)

SESSION_USER (Transact-SQL)

系统函数 (Transact-SQL)

SYSTEM_USER (Transact-SQL)