如何获取用户SQL日志的Windows登录用户名

Dav*_*.ca 12 sql windows sql-server sql-server-2005

通过使用sp_who2,我可以获得当前登录用户和计算机名称的列表.有些用户正在使用SQL Server登录用户名,例如sa.有没有办法让我可以获得SQL登录用户的Windows登录用户名?

如果无法从计算机名称获取Windows登录用户,是否可以使用WMI类或C#通过其计算机名称查找Windows登录用户名?

我的SQL服务器是Microsoft SQL Server 2005,Windows是Server 2003.

小智 20

要获取用户和计算机名称,请使用以下命令:

SELECT HOST_NAME() AS HostName, SUSER_NAME() LoggedInUser
Run Code Online (Sandbox Code Playgroud)

  • 这不会给OP提出的NTID. (2认同)
  • 不,这只能提供NT用户名_iff_用户使用Windows身份验证登录到SQL Server.再次读取OP将表明他们想要以某种方式获取使用_SQL logins_连接的人的NT名称. (2认同)

gbn*_*gbn 5

SQL 登录名和 NT 用户名之间没有链接。

您在这里问了类似的问题:How to find out user name and machine name to access to SQL server

如果超过 1 个用户登录到客户端 PC(例如服务帐户、通过 mstsc 的远程用户等),WMI 方法将不明确。任何类似的方法都需要所使用的帐户在客户端 PC 上具有管理员权限。

我怀疑你能实时做到这一点。

您所能做的就是从那里记录client_net_address输入sys.dm_exec_connections和回溯,可能通过 WMI,但不能从 SQL Server 本身。

您需要用户名吗?或者只是客户端电脑,以便您可以更改应用程序连接字符串?

如果您只有相对较少的 SQL 连接,您最终的解决方案是更改 sa 密码并查看谁调用