2016-10-20 2 views
2

基本的なCRUD操作を使用して、私たちの製品のデータベースユーザーを管理するための簡単なツールを作成しています。このツールは、Firebird 2.5データベースとのFirebird ADO v5.5.5.0接続を使用してVS2013で構築されています。SQLを使用してユーザーのリストを列挙する方法は?

SQLを使用してユーザーのリストを列挙する方法はありますか?

ユーザーの一覧を表示してから、その一覧に対してCRUD操作を実行する必要があります。それはユーザー権限がこの表に存在することが必要とthis link hereに示すような

SELECT RDB$USER 
FROM RDB$USER_PRIVILEGES 
GROUP BY 1 

としてコマンドを実行

は十分ではありません。

ご協力いただければ幸いです。ありがとう。

答えて

2

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を追加しました。ほとんどのユーザーにとっては、通常はこのユーザーだけです.SDBDBAとRDB $ ADMINロールを持つユーザーのみがすべてのユーザーを表示できます。

Firebird 3には複数の認証プラグインがあることに注意してください。つまり、ユーザー名は複数回(つまり、プラグインごとに最大で1回)発生する可能性があります。

関連する問題