如何在触发器中看到NTusername?

时间:2012-02-08 14:44:19

标签: sql-server-2005 triggers

SQL Server Profiler显示NtUsername。 如何在触发器中看到NTusername?

我不明白。 SQL Server Profiler显示Windows用户名。 SUSER_NAME,SUSER_SNAME ORIGINAL_LOGIN,USER,USER_NAME显示SQL用户帐户的用户名。我想要Profiler所展示的内容。如果探查者可以这样做,必须有办法。

4 个答案:

答案 0 :(得分:1)

您使用SUSER_SNAME()。不是SUSER_NAME()。请注意额外的 S

SUSER_NAME将为通过Windows组连接的Windows用户提供NULL,因为只有Windows组在sys.server_principals中有一个条目

注意:

  • SQL Server实例级别的SUSER_ID和SUSER_SID是相反的
  • 数据库级别,您有USER_NAME和DATABASE_PRINCIPAL_ID(不推荐使用USER_ID)
  • SQL登录将不会在Profiler中具有ntusername值,因为它不可用

答案 1 :(得分:1)

由于我找不到如何获取NTUsername,我使用了HOST_NAME(),它给了我用户的机器名。

SUSER_NAME,SUSER_SNAME,ORIGINAL_LOGIN,USER,USER_NAME都给了我SQL帐户用户名。

答案 2 :(得分:0)

除非登录是Windows身份验证登录,否则NTUserName之间没有关联。但是因为suser_name()没有返回你想要的东西,我假设你正在使用SQL Server身份验证。

在这种情况下,我不相信你能做到这一点。

答案 3 :(得分:0)

它表明您的案例中使用的协议是NamedPipes。

  • 如果NTUserName不为空并且在LoginName中您有SQL登录 - 那么它是通过命名管道进行SQL身份验证

- 请参阅http://sqlbg.wordpress.com/2011/05/28/how-to-check-what-sql-server-network-protocol-is-used-by-connections/