USER_NAME (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