- PR -

VB.NET2003からPostgres8への接続

1
投稿者投稿内容
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2006-04-07 15:47
VB.NET2003+Postgres(8.1.3)+Npgsqlを利用して接続をしているのですが
接続時に以下のようにlocalhostと指定しております
cn = New NpgsqlConnection("Server=localhost;Port=5432;Database=database1;User Id=postgres;Password=postgres;")

クライアントにもプログラムをインストールしてりようするのでlocalhostの所をサーバー名称に変更したところcn.openで「転送接続からデータを読み取れません。」というエラーが発生しました。

いろいろ調べていると「postgresql.conf」を変更すればできるとの情報を得て以下のように変更してみました。
listen_addresses = 'localhost,server1'
この状態でプログラムでは
cn = New NpgsqlConnection("Server=server1';Port=5432;Database=database1;User Id=postgres;Password=postgres;")
これではエラーが出ました

そこでIPを指定するように変更して
listen_addresses = 'localhost,192.168.129.10'
この状態でプログラムでは
cn = New NpgsqlConnection("Server=192.168.129.10;Port=5432;Database=database1;User Id=postgres;Password=postgres;")
これでも同じくエラーが出ました。

「postgresql.conf」を変更後はPostgresで「構成のリロード」は行っています。


確認したいのは、サーバ名称でアクセスしたい場合どのようにすればいいのかです
ご存知の方がいらっしゃいましたらご教授願います
鎌田
常連さん
会議室デビュー日: 2003/09/23
投稿数: 45
投稿日時: 2006-04-07 16:22
listen_addresses = '*' でTCP/IP接続を許可して、
あとは、pg_hba.confで接続できるクライアントのIPアドレスを制限すればOKだと思います。

鎌田
常連さん
会議室デビュー日: 2003/09/23
投稿数: 45
投稿日時: 2006-04-07 16:27
+ 前提として、postgresqlが動いているサーバーマシンの名称を、クライアント側がDNSサーバーでIPアドレスに読み替えできることが必要です。

(クライアントアプリケーションで、サーバーのIPアドレス指定するなら、先ほどのlisten_addresses = '*'とpg_hba.confの見直しでOKでしょう。)
インスパ
大ベテラン
会議室デビュー日: 2002/08/30
投稿数: 125
投稿日時: 2006-04-07 16:48
鎌田さん、情報ありがとうございます。
DHCP利用でIPアドレスが固定でないので、サーバ名称を指定して接続する方法を模索しております。
cn = New NpgsqlConnection("Server=localhost;Port=5432;Database=database1;User Id=postgres;Password=postgres;")
サーバ側ではこの記述で接続できるのですが、クライアント側からだと
localhost(クライアント自身)にPostgresが入っていないので接続できません

そのため
cn = New NpgsqlConnection("Server=server1';Port=5432;Database=database1;User Id=postgres;Password=postgres;")
このようにサーバ名称を指定して、サーバ、クライアントどちらからでも接続できるような方法ができないか考えております。

鎌田
常連さん
会議室デビュー日: 2003/09/23
投稿数: 45
投稿日時: 2006-04-07 19:11
ネットワーク構成やサーバーPCの設定次第でしょうけれど、
サーバーのホスト名(NetBIOS名ではなく)が固定されているという前提なら、

サーバーのホスト名からSystem.Net.Dns.GetHostByNameでサーバーIPアドレスを得て、それでNpgsqlConnectionに渡す接続文字列を書き換えればよいのではないかと。
1

スキルアップ/キャリアアップ(JOB@IT)