USER_NAME (Transact-SQL)

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

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

语法

USER_NAME ( [ id ] )

参数

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

返回类型

nvarchar(256)

注释

省略 id 时,则假定为当前上下文中的当前用户。如果在 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