SUSER_SNAME (Transact-SQL)
返回与安全标识号 (SID) 关联的登录名。
语法
SUSER_SNAME ( [ server_user_sid ] )
参数
- server_user_sid
登录名的安全标识号。server_user_sid 为可选参数,其数据类型为 varbinary(85)。server_user_sid 可以是任何 SQL Server 登录名或 Microsoft Windows 用户或组的安全标识号。如果未指定 server_user_sid,则返回有关当前用户的信息。
返回类型
nvarchar(128)
注释
SUSER_SNAME 在 ALTER TABLE 或 CREATE TABLE 中可用作 DEFAULT 约束。SUSER_SNAME 可以在选择列表、WHERE 子句和任何允许使用表达式的地方使用。SUSER_SNAME 必须始终后跟括号,即使在未指定参数的情况下也是如此。
在无参数的情况下调用时,SUSER_SNAME 返回当前安全上下文的名称。当通过使用 EXECUTE AS 切换上下文的批中无参数调用 SUSER_SNAME 时,将返回模拟上下文的名称。从模拟上下文中调用时,ORIGINAL_LOGIN 将返回原始上下文的名称。
示例
A. 使用 SUSER_SNAME
以下示例返回值为 0x01 的安全标识号的登录名。
SELECT SUSER_SNAME(0x01);
GO
B. 使用带 Windows 用户安全 ID 的 SUSER_SNAME
以下示例返回与 Windows 安全标识号关联的登录名。
SELECT SUSER_SNAME(0x010500000000000515000000a065cf7e784b9b5fe77c87705a2e0000);
GO
C. 将 SUSER_SNAME 用作 DEFAULT 约束
下面的示例在 CREATE TABLE 语句中使用 SUSER_SNAME 作为 DEFAULT 约束。
USE AdventureWorks;
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