适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统(PDW)
Microsoft Fabric 中的 SQL 分析终结点
Microsoft Fabric 中的仓库
Microsoft Fabric 预览版中的 SQL 数据库
返回与安全标识号 (SID) 关联的登录名。
语法
SUSER_SNAME ( [ server_user_sid ] )
参数
server_user_sid
可选的登录安全标识号。 server_user_sid 为 varbinary(85)。 server_user_sid 可以是任何 SQL Server 登录或 Microsoft Windows 用户或组的安全标识号。 请参阅 sid 或 sys.server_principals 目录视图中的 sys.sql_logins 列。 如果未指定 server_user_sid,则返回有关当前用户的信息。 如果此参数包含 NULL 一词,SUSER_SNAME 将返回 NULL。
Microsoft Fabric 预览版中的 Azure SQL 数据库或 SQL 数据库不支持server_user_sid。
返回类型
nvarchar(128)
注解
SUSER_SNAME可以用作任ALTER TABLE一DEFAULT约束,也可以CREATE TABLE用作约束。
SUSER_SNAME 可以在选择列表中、子句和 WHERE 允许表达式的任何位置使用。
SUSER_SNAME 必须始终后跟括号,即使在未指定参数的情况下也是如此。
在无参数的情况下调用时,SUSER_SNAME 返回当前安全上下文的名称。 在使用 EXECUTE AS 切换上下文的批处理中进行无参数调用时,SUSER_SNAME 将返回模拟上下文的名称。 从模拟上下文中调用时,ORIGINAL_LOGIN 将返回原始上下文的名称。
Azure SQL 数据库、Fabric 中的 SQL 数据库备注
SUSER_SNAME 始终返回当前安全上下文的登录名。
该 SUSER_SNAME 语句不支持通过模拟 EXECUTE AS的安全上下文执行。
SUSER_SNAME 不支持 server_user_id 参数。
示例
A. 使用 SUSER_SNAME
下面的示例返回当前安全上下文的登录名。
SELECT SUSER_SNAME();
GO
B. 使用带 Windows 用户安全 ID 的 SUSER_SNAME
以下示例返回与 Windows 安全标识号关联的登录名。
SELECT SUSER_SNAME(0x010500000000000515000000a065cf7e784b9b5fe77c87705a2e0000);
GO
C. 将 SUSER_SNAME 用作 DEFAULT 约束
以下示例在语句中CREATE TABLE用作SUSER_SNAMEDEFAULT约束。
USE AdventureWorks2022;
GO
CREATE TABLE sname_example (
login_sname SYSNAME DEFAULT SUSER_SNAME(),
employee_id UNIQUEIDENTIFIER DEFAULT NEWID(),
login_date DATETIME DEFAULT GETDATE()
);
GO
INSERT sname_example DEFAULT
VALUES;
GO
D. 与 EXECUTE AS 一起调用 SUSER_SNAME
该示例显示了从模拟上下文调用时的 SUSER_SNAME 的行为。
SELECT SUSER_SNAME();
GO
EXECUTE AS LOGIN = 'WanidaBenShoof';
SELECT SUSER_SNAME();
REVERT;
GO
SELECT SUSER_SNAME();
GO
下面是结果。
sa
WanidaBenShoof
sa
示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
E. 使用 SUSER_SNAME
以下示例返回值为 0x01 的安全标识号的登录名。
SELECT SUSER_SNAME(0x01);
GO
F. 返回当前登录名
以下示例返回当前登录的登录名称。
SELECT SUSER_SNAME() AS CurrentLogin;
GO