在 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 数据库用户的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server全库搜索(在所有表中查找内容)

在SQL Server数据库中查找所有外键

如何通过 SQL Server 或 c# 在低和高之间查找加拿大邮政编码

SQL Server 查询以查找数据库中所有用户的所有权限/访问权限

如何在 SQL Server 中查找外键依赖项?

SQL Server 在特定列的所有行中查找和替换特定单词