mssql sqlserver ORIGINAL_LOGIN()和SUSER_SNAME()区别分享


摘要:
下文讲述 ORIGINAL_LOGIN()、SUSER_SNAME()两个函数之间的区别


ORIGINAL_LOGIN():返回连接到SQL Server实例的原始或首次登录的名称,它用于在会话中标识原始登录。
如果存在经常发生上下文切换的应用程序或数据库,那么这可能是审计非常有用的功能。让我们看看一个快速的T-SQL示例,我们最初一起检索当前用户和原始登录,您会发现它们是相同的。之后,我们将创建一个新用户,并将执行的上下文设置给新用户。
稍后我们将运行相同的命令,您会注意到当前用户名已被更改,但原始登录名保持不变。

  SELECT ORIGINAL_LOGIN() [原始登录账户], SUSER_SNAME() [当前登录账户]
GO
--创建账号
CREATE LOGIN loginInfo WITH PASSWORD = 'erp';
CREATE USER loginUser FOR LOGIN loginInfo;
GO
 
EXECUTE AS LOGIN = 'loginInfo'
GO
SELECT ORIGINAL_LOGIN() [原始登录账户], SUSER_SNAME() [当前登录账户]
GO
 
REVERT
GO
 
SELECT ORIGINAL_LOGIN() [原始登录账户], SUSER_SNAME() [当前登录账户]
GO
 
DROP LOGIN loginInfo;
DROP USER loginUser;
GO 
mssql_sqlserver_original_login_subser_name

mssql_sqlserver_original_login_subser_name