我使用用户分配的托管标识从 Web 应用程序连接 Azure SQL Server。到目前为止,这工作正常,我们的日志记录过程会在数据库中记录此应用程序(和其他应用程序)的所有活动。
要确定当前代理用户的用户名,我通常可以在任何存储过程中使用类似
SELECT @ORIGINAL_LOGIN()
这将返回连接用户的用户名。
托管身份的用户名在我的例子中是“octservice”。但是,当“octservice”连接并记录其活动时,@ORIGINAL_LOGIN() 函数不会返回其用户名,而是从 Azure AD 返回类似 ClientID@TenantID 的内容。
我怎样才能确定用户名,就像它出现在 SSMS 中一样? ClientID@TenantID 不是该用户的 USER_ID。
答案 0 :(得分:0)
试试SELECT SYSTEM_USER()
?它是 SUSER_SNAME()
的同义词。我已经看到它在托管身份方面被引用过一两次。