Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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
C# 如何通过SQL枚举用户列表?_C#_Firebird_Firebird2.5 - Fatal编程技术网

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

C# 如何通过SQL枚举用户列表?,c#,firebird,firebird2.5,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 如中所示,这是不够的,因为它要求此表中存在用户权限 任何帮助都将不胜感激。谢谢。在Fi

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

是否有一种使用SQL枚举用户列表的方法

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

运行命令,如

SELECT RDB$USER
FROM RDB$USER_PRIVILEGES
GROUP BY 1
如中所示,这是不够的,因为它要求此表中存在用户权限


任何帮助都将不胜感激。谢谢。

在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用户管理语句。看

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

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