Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从sql server获取windows用户登录名_Sql_Sql Server_Tsql - Fatal编程技术网

从sql server获取windows用户登录名

从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

我的数据库配置为使用登录名为sa的SQL server身份验证。现在我想知道用户的Windows登录用户名是什么。SA将为每个人服务。我能够获得计算机IP地址和计算机名,但我迫切需要用户的Windows登录用户名。我的网络是使用active directory btw设置的

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身份验证的连接。如果您使用的是客户机应用程序,也许您可以对其进行编码,以获取用户名,然后将其传递给服务器?