質問: 他社のシステムのDB(PostgreSQL9)に対して接続して、 データを取り込むシステム(C#)を作成しています。 psql.exeでは接続できますし、Select文の結果も返ってきます。 Npgsqlで接続をすると「42501:リレーション pg_namespaceへの権限がありませ ん」となり接続できません。 提供している会社に確認すると、namespaceの権限を付与すると公開していない テーブルまで見えてしまうので、権限を付与することはできないといわれました。 公開されているテーブルをNpqsqlで単純にSelectして、ータを取得したいだけですが、 やはり無理なのでしょうか? psqlでは接続できるので、Npgsqlの接続文字列の指定で何とか ならないものでしょうか? Npgsqlでは以下の接続文字列を設定しています Server=xxx.xxx.xx.xx;Port=xxxx;UserId=xxx;Password=xxx;Database=xxx; Psqlでは以下のコマンドを流すとデータは返ってきます psql --host=xxx.xxx.xx.xx --port=xxxx --username=xxx --dbname=xxx --password=xxx -c "select * from xxx
回答: エラーが出ているのは接続の話ではありません。権限の有無です。 他のプログラムでは接続できているからといって、 Npgsqlがnamespaceの参照を必要としている以上無理でしょう。 単にデータを取り込むだけなら、odbc接続程度でも支障は無い気がします。