0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Crystal Reportsから接続したPostgreSQLのapplication_nameを設定する方法

0
Last updated at Posted at 2026-08-04

Crystal Reports + PostgreSQL(ODBC) 環境で application_name を設定する方法

VB.NETで作成したWindowsフォームアプリケーションにて帳票作成をしています。この時、帳票作成用ライブラリのCrystal Reports から PostgreSQL に接続する際、pg_stat_activityapplication_name に任意の値を設定したかったので調査したところ、ODBC の設定だけで実現できました。

同様の構成で接続元アプリケーションを識別したい方の参考になればと思います。

環境

  • PostgreSQL 16
  • VB.NET (.NET Framework 4.7.2)
  • Crystal Reports Runtime
  • PostgreSQL ODBC Driver (psqlODBC)
  • Windows 11

接続コード

Crystal Reports へログイン情報を設定するコードは以下のような構成です。

Dim logOnInfo As TableLogOnInfo = New TableLogOnInfo()
logOnInfo = report.Database.Tables(table).LogOnInfo

Dim ConnectionInfo As ConnectionInfo = New ConnectionInfo()
ConnectionInfo.ServerName = server
ConnectionInfo.DatabaseName = dbName
ConnectionInfo.UserID = user
ConnectionInfo.Password = pwd

report.Database.Tables(table).ApplyLogOnInfo(logOnInfo)

report.SetDatabaseLogon(user, pwd)

report.SetDataSource(dtReport)

やりたかったこと

PostgreSQL の pg_stat_activity から、どのアプリケーションが接続しているのか識別したい。

SELECT
    pid,
    usename,
    application_name
FROM pg_stat_activity;

例えば以下のように表示させたい。

application_name
CrystalReports

調査結果

Crystal Reports の

CrystalDecisions.Shared.ConnectionInfo

には ApplicationName のようなプロパティはありません。

そのため、

application_name=CrystalReports

のような PostgreSQL 固有の接続パラメータをコードから直接設定することはできませんでした。

解決方法

ODBC データソースの設定画面にある Connect Settings を利用します。

設定内容

SET application_name='CrystalReports';

これを設定するだけです。

設定手順

1. ODBC データソース管理ツールを起動

Crystal Reports が 32bit の場合は以下を利用します。

C:\Windows\SysWOW64\odbcad32.exe

2. PostgreSQL の DSN を編集

利用中の PostgreSQL ODBC データソースを選択し、設定画面を開きます。

3. Connect Settings に入力

SET application_name='CrystalReports';

を入力して保存します。

動作確認

帳票作成処理を実行後に PostgreSQL 側で確認します。

SELECT
    pid,
    usename,
    application_name,
    client_addr,
    state
FROM pg_stat_activity;

実行結果例

 pid  | usename | application_name
------+---------+------------------
 1234 | user    | CrystalReports

無事に application_name が設定されていることを確認できました。

応用例

帳票ごとに接続元を識別したい場合は、DSN を分ける方法も有効です。

帳票A用DSN

Connect Settings

SET application_name='ReportA';

帳票B用DSN

Connect Settings

SET application_name='ReportB';

こうしておくと、PostgreSQL の監視や性能調査時にどの帳票からの接続かを容易に判別できます。

まとめ

Crystal Reports + PostgreSQL ODBC 環境では、ConnectionInfo から application_name を設定する方法は見つけられませんでした。
上手いやり方があれば是非ともご教示いただきたいです。

しかし、ODBC データソースの Connect Settings に以下を設定することで対応可能です。

SET application_name='CrystalReports';

これにより PostgreSQL の pg_stat_activity.application_name に任意の値を表示でき、接続元アプリケーションの識別がしやすくなります。

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?