从sql server获取windows用户登录名
我的数据库配置为使用登录名为sa的SQL server身份验证。现在我想知道用户的Windows登录用户名是什么。SA将为每个人服务。我能够获得计算机IP地址和计算机名,但我迫切需要用户的Windows登录用户名。我的网络是使用active directory btw设置的从sql server获取windows用户登录名,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的数据库配置为使用登录名为sa的SQL server身份验证。现在我想知道用户的Windows登录用户名是什么。SA将为每个人服务。我能够获得计算机IP地址和计算机名,但我迫切需要用户的Windows登录用户名。我的网络是使用active directory btw设置的 set @UserComputerIP = CONVERT(varchar(20),CONNECTIONPROPERTY('client_net_address')) set @UserComputerName = CON
set @UserComputerIP = CONVERT(varchar(20),CONNECTIONPROPERTY('client_net_address'))
set @UserComputerName = CONVERT(varchar(20),HOST_NAME())
任何帮助都将不胜感激。(注意:否,我无法切换到SQL Server中的Windows身份验证)您是否尝试了以下命令将为您提供NT ID
SELECT CONVERT(varchar(20),suser_sname())
如果您不使用Windows身份验证,我不确定您是否可以获得域名 据我所知,最详细的信息是系统表/视图,如果使用SQL登录进行连接,这些表/视图不会显示NT用户名。即使服务器处于混合身份验证模式 在SQL Server 2008之前的版本上:
select nt_username from master.sys.sysprocesses where spid = @@spid
从上的SQL Server 2008开始:
select nt_user_name from sys.dm_exec_sessions where session_id = @@spid
如果您使用SQL身份验证进行连接,则两者都将显示空列。您应该在数据库连接中使用受信任的连接字符串。当与windows用户连接到混合安全模式SQL Server 2017时,此查询将返回域名和用户名。这正是我需要的,谢谢!只是为了确保您知道:如果用户是SA,那么他们不仅可以对整个数据库实例,还可能对服务器本身造成极大的伤害。如果他们以SQL Server用户身份登录,则他们不会以Windows用户身份登录;根本不传递Windows凭据;所以你不能直接获得这些信息。不要使用SA!创建另一个管理员登录,您只能用于罕见的管理需要,设置每个人都使用Windows身份验证,并将sa密码放在某个安全保管箱中。为什么您认为在这种情况下可以获得Windows登录?如果SA能够访问你的整个用户群,我会重新考虑。结果是空的。这可能是不可能的。是的,我在我的服务器上也尝试过,而该列仅适用于具有Windows身份验证的连接。如果您使用的是客户机应用程序,也许您可以对其进行编码,以获取用户名,然后将其传递给服务器?