如何从 Sqlconnection 获取当前用户

Posted

技术标签:

【中文标题】如何从 Sqlconnection 获取当前用户【英文标题】:How can I get the current user from Sqlconnection 【发布时间】:2014-05-28 13:49:51 【问题描述】:

我正在尝试确定我的应用程序正在使用哪个用户对我的数据库进行身份验证,有没有办法让我可以获取用于执行 sql 代码的用户?

string connection = WebConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString;

using (SqlConnection conn = new SqlConnection(connection))
       
        using (SqlDataAdapter adapter = new SqlDataAdapter())
               
                   adapter.SelectCommand = new SqlCommand();
                   adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
                   adapter.SelectCommand.CommandText = "MySPName";
                   adapter.SelectCommand.Connection = conn;
                   using (DataSet ds = new DataSet())
                        
                            try
                            
                                adapter.SelectCommand.Connection.Open();
                                logULS("Connection Open");
                                //Want to log the user that has the connection open...
                                adapter.Fill(ds);
                                adapter.SelectCommand.Connection.Close();

                              
                            catch (Exception ex)
                            
                                logULS(ex.ToString());
                            
                        
                    

【问题讨论】:

【参考方案1】:

试试这个:

SELECT CURRENT_USER;
GO

上面返回的是当前用户的名字。检查here

要查看当前连接的用户,您可以使用sp_who

sp_who [ [ @loginame = ] 'login' | session ID | 'ACTIVE' ]

【讨论】:

【参考方案2】:

对数据库执行以下命令

sp_who2

它列出了所有打开的连接,包括登录名和主机名。

【讨论】:

以上是关于如何从 Sqlconnection 获取当前用户的主要内容,如果未能解决你的问题,请参考以下文章

csharp 从DbContext获取SqlConnection

我可以从 SqlConnection 对象中获取对挂起事务的引用吗?

如何使用 SqlConnection.GetSchema 获取同义词信息?

C# CancellationToken 如何与 SqlConnection.OpenAsync(token) 一起使用?

如何从firebase获取当前用户地址

第六周学习笔记