在 C# 中查找所有 SQL Server 数据库用户

Posted

技术标签:

【中文标题】在 C# 中查找所有 SQL Server 数据库用户【英文标题】:Find all SQL Server database users in C# 【发布时间】:2018-07-24 08:39:19 【问题描述】:

要查找我目前正在使用以下代码的所有数据库用户/所有者

m_server 的类型为Microsoft.SqlServer.Management.Smo.Server

var databases = m_server.Databases;
var result = new List<string>();

foreach (Database database in databases)

    if (!result.Contains(database.Owner))
    
        result.Add(database.Owner);
    

这种方法缺乏性能。

有没有其他方法可以从Microsoft.SqlServer.Management.Smo.Server类型变量中获取用户列表?

【问题讨论】:

不要在 dotnet 中这样做。在 sql 中执行。这有点像使用图书馆告诉你一本书的第 34 页上的文字是什么,而你可以直接去这本书看。这是在 t-sql 中执行此操作的一个很好的示例。 ***.com/questions/8471124/… 是数据库 SQL 或 Windows 的凭据。通常数据库设置为在 Windows 中使用组帐户。因此,您需要获取 windows 组帐户中的用户。 你能澄清什么缺乏性能吗? 它很慢,因为它需要在获取所有者信息之前为每个数据库创建一个实例。我对 SQL 查询有限制 【参考方案1】:
      var result = new List<string>();
        foreach (Login login in m_server.Logins)
        
            if (!login.IsDisabled)
            
                result.Add(login.Name);
            
        
        return result;

我明白了,这是完美的代码

【讨论】:

以上是关于在 C# 中查找所有 SQL Server 数据库用户的主要内容,如果未能解决你的问题,请参考以下文章