2016-08-17 7 views
0

Firebirdデータベースをサーバーにホストしています。 Firebirdは、ユーザ名、役割などを含む接続されたユーザのリストをMON$ATTACHMENTSテーブルで表示できます。しかし、私は特定のクライアントのIPアドレスを取得する方法を見つけることができません。Firebirdで接続しているクライアントを取得する

例:192.168.1.77のユーザー「USER」が192.168.1.2(サーバー)に接続されている場合、この192.168.1.77のアドレスをFirebirdクエリでどのように取得できますか?

編集:MON$REMOTE_ADDRESSには、ローカルクライアントではなくDHCPサーバーのアドレスが表示されます。

+0

接続文字列は何ですか? FB版は何ですか?あなたのプログラムは何ですか?それはどのクライアントライブラリですか?私はちょうどWin2003上に存在する2.1サーバーにfbClient 3.0とWin7からIBExperを接続することを確認しました - そして、MON $ REMOTE_ADDRESSはクライアントアドレスを正しく示しています。私は間違ったクライアントライブラリがサーバーに間違ったアドレスを報告するかもしれないと思う... // BTW、あなたはほぼ同じ - 特定のクライアントのことを言う - クライアントが他と違っていて、間違ったIPを報告する.... –

+0

1) SuperServerまたはClassic Serverはありますか? 2)後で使うために正しいIPをいくつかのテーブルに登録するようにそのクライアントコードを変更できますか? –

+0

私はクライアントプログラムのソースを持っていないので(アクセスできません)、私は絶対に何も知っていません(サーバーと同じです)。私の上司に解決策を尋ねて、後でそれを掲示するつもりです。 – Saphirel

答えて

1

Firebirdには、現在の接続がすべて格納される内部添付テーブルがあります。 USERという名前のユーザーのリモートアドレスは、次のように問い合わせることができます。

select MON$REMOTE_ADDRESS 
    from MON$ATTACHMENTS 
    where MON$USER = 'USER' 
+0

Firebirdによって表示されるMON $ REMOTE_ADDRESSはクライアントではありませんアドレスは、サーバーのものと思われます。 – Saphirel

+1

@Saphirel AFAIKクライアントのアドレス(およびFirebird 3.0のアドレス+クライアントのポート) –

+0

@MarkRotteveelである必要がありますが、そのフィールドを埋めるのは何ですか?このサーバー自体またはクライアントライブラリですか?ワイヤプロトコルを使用する場合、そのフィールドに伝えられるデータを渡しますか?またはおそらく彼の接続文字列はプロキシチェーンのものです.... –

関連する問題