エラーから、unixODBC を使用していることがわかります。Vertica が「DSI」と呼んでいるのは、ODBC エラー テキストが [] 内のエントリで左から右にフォーマットされており、さまざまなコンポーネントを通るパスとしてフォーマットされているためです (「診断メッセージの例」を参照)。
メッセージは「SQLGetPrivateprofileStringが見つかりませんでした」であると思います。SQLGetPrivateProfileString は、odbc.ini ファイルからエントリを読み取るために ODBC ドライバー マネージャーによって提供される API です。libodbcinst.so 共有オブジェクトにあるはずですが、一部のディストリビューション (Ubuntu/Debian など) では共有オブジェクトからシンボルが削除されるため、これを確認するのは困難です。
DSN では、ドライバーはファイル「/opt/vertica/lib/libverticaodbc_unixodbc.so」です。odbc.ini でドライバに名前を付け、odbcinst.ini ファイルにエントリを追加するのがより一般的ですが、DSN は問題ないようです。例えば:
/etc/odbcinst.ini:
[Easysoft ODBC-SQL Server SSL]
Driver=/usr/local/easysoft/sqlserver/lib/libessqlsrv.so
Setup=/usr/local/easysoft/sqlserver/lib/libessqlsrvS.so
Threading=0
FileUsage=1
DontDLClose=1
/etc/odbc.ini:
[SQLSERVER_SAMPLE_SSL]
Driver=Easysoft ODBC-SQL Server SSL
Description=Easysoft SQL Server ODBC driver
.
.
上記の例では、このようにすると、Threading などのドライバーに関連付けられた追加オプションを指定できるようになります (また、ネットで簡単に検索すると、Vertica は Threading=1 を使用できることがわかります。これは、スレッド化されたプログラムを使用する場合に制限が少なくなります) および DontDLClose です。ただし、私が言ったように、今のように機能するはずです。
次のビットはプラットフォームによって異なりますが、指定されているかどうかはわかりませんでした。ODBC ドライバーの共有オブジェクトを調べて、それが何に依存しているかを確認する必要があります。Linux では、次のようにします。
$ ldd /usr/local/easysoft/sqlserver/lib/libessqlsrv.so
linux-gate.so.1 => (0xb76ff000)
libodbcinst.so.1 => /usr/lib/libodbcinst.so.1 (0xb75fe000)
libesextra_r.so => /usr/local/easysoft/lib/libesextra_r.so (0xb75fb000)
libessupp_r.so => /usr/local/easysoft/lib/libessupp_r.so (0xb75de000)
libeslicshr_r.so => /usr/local/easysoft/lib/libeslicshr_r.so (0xb75cd000)
libestdscrypt.so => /usr/local/easysoft/lib/libestdscrypt.so (0xb75c8000)
libm.so.6 => /lib/libm.so.6 (0xb75a2000)
libc.so.6 => /lib/libc.so.6 (0xb7445000)
libltdl.so.7 => /usr/lib/libltdl.so.7 (0xb743b000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7421000)
/lib/ld-linux.so.2 (0xb7700000)
libdl.so.2 => /lib/libdl.so.2 (0xb741d000)
これは、この ODBC ドライバーが libodbcinst.so.1 に依存しており、動的リンカーがそれを見つけたことを示しています。Vertica ドライバーはこの点で似ているはずですが、Vertica ドライバーが最初にロードされるときにこの共有オブジェクト自体を動的にロードする可能性があります。いずれにせよ、Vertica ドライバーは libodbcinst.so にあるシンボル SQLGetPrivateProfileString を見つけられないように見えるので、a) libodbcinst.so があることを確認してください b) 動的リンカーがそれを認識している (これがどのように行われるかは、プラットフォームによって異なります - Linux の場合) /etc/ld.so.conf と LD_LIBRARY_PATH および ld.so のマニュアル ページを参照してください。
vertica.ini ファイルは、おそらくドライバーがドライバー固有の構成を保存する場所です。これを行うドライバーもあります。このファイルのフォーマットが上記の odbc のようなものである場合、使用するファイルを ODBC API で指定できるため、このファイルに SQLGetPrivateProfileString を使用することもできます。
これを超えて、連絡先の vertica 以外のアイデアはありません。