c# - 如何通过 SQL 枚举用户列表?

标签 c# firebird firebird2.5

我正在创建一个简单的工具,用于管理我们产品的数据库用户,并具有基本的 CRUD 操作。该工具是在 VS2013 中构建的,使用 Firebird ADO v5.5.5.0 连接 Firebird 2.5 数据库。

有没有办法使用SQL来枚举用户列表?

我需要显示用户列表,然后对该列表执行 CRUD 操作。

运行命令,例如

SELECT RDB$USER
FROM RDB$USER_PRIVILEGES
GROUP BY 1

this link here所示还不够,因为它要求此表中存在用户权限。

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

在 Firebird 2.5 或更早版本中,访问所有用户列表的唯一方法是通过服务 API。 Firebird ADO.net 提供程序为此提供了一个实用程序类:FirebirdSql.Data.Services.FbSecurity:

var fbSecurity = new FbSecurity(ConnectionString);
var users = fbSecurity.DisplayUsers();
foreach (var user in users)
{
    Console.WriteLine(user.UserName);
}

您还可以使用此类来添加、删除或修改用户。

请注意,对于大多数用户来说,这仅限于该用户,只有 SYSDBA 和具有 RDB$ADMIN 角色的用户才允许查看所有用户。

请注意,Firebird 3 已弃用用于用户管理的服务 API,从 Firebird 3 开始,您应该使用 SQL 用户管理语句。请参阅SQL Features for Managing Access .

Firebird 3 还添加了 virtual table SEC$USERS与当前用户允许管理的用户。对于大多数用户来说,这通常只是该用户,只有 SYSDBA 和具有 RDB$ADMIN 角色的用户才被允许查看所有用户。

请注意,Firebird 3 可以有多个身份验证插件,这意味着用户名可以出现多次(即每个插件最多出现一次)。

关于c# - 如何通过 SQL 枚举用户列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40144495/

相关文章:

c# - 使用 C# 在特定设备中播放声音

C# 正则表达式验证

java - Firebird JDBC 更新监听器

java - 在 Firebird 中通过 Jooq 使用 UUID PK 或 FK

utf-8 - 将 Firebird 字段/域从 ISO8859_1 转换为 UTF8

c# - 尝试在 C# 中使用 Firebird 客户端创建新的 Firebird 用户时出错

c# - 使用 ASP/C# 在 MYSQL 中显示 blob 图像

c# - 如何访问由 Designer (XAML) 创建的 xamarin(C#、Visual Studio 2015)中的控件

sql - 在 sql (Firebird/MySql) 中更新/插入记录的正确/最快的方法是什么

delphi - 如何在 Delphi 中使用 dbExpress 将参数传递给查询