10

こんにちは、Ubuntu 10.10 32 ビット バージョンのマシンで vertica の DSN 設定を構成しました。設定はすべて問題なく、クロスチェックしました。

ここに私の odbc.ini ファイルがあります:

 [VerticaDSN]
  Description = VerticaDSN ODBC driver
  Driver = /opt/vertica/lib/libverticaodbc_unixodbc.so
  Servername = myservername
  Database = mydbname
  Port = 5433
  UserName = myuname
  Password = *******
  Locale = en_US

同様に、odbcinst.ini ファイルがあります。

コマンド isql -v VerticaDSN を実行すると、次のエラーが表示されます。

 [S1000][unixODBC][DSI] The error message NoSQLGetPrivateProfileString could not be found    in the en-US locale. Check that /en-US/ODBCMessages.xml exists.
[ISQL]ERROR: Could not SQLConnect.

すべてを試しましたが、このエラーを解読できません。

どんな助けでも大歓迎です。

4

4 に答える 4

15

ドライバー構成セクションが欠落している可能性があります。次の内容でファイル /etc/vertica.ini を編集または作成します。

[Driver]
DriverManagerEncoding=UTF-16
ODBCInstLib=/usr/lib64/libodbcinst.so
ErrorMessagesPath=/opt/vertica/lib64
LogLevel=4
LogPath=/tmp

詳細については、「Vertica Programmer's Guide」の「追加ドライバー設定の場所」セクションを参照してください。

于 2012-06-22T19:02:34.457 に答える
2

この問題についてインターネットを検索すると、多くの人がtsqlに接続できたが、isqlまたはosql(isqlを使用)には接続できなかったことがわかりました。私はこれと同じ問題を抱えており、先週、問題が何であるかを理解するために調査とテストを行ってきました。問題は、それがWindowsサーバーまたはSQLサーバーの構成に関係していると私が思うとき、誰もがODBCの角度からそれにアプローチしているということです。Windowsサーバーのログを確認したところ、ODBCを実行しているマシンがそれにヒットし、繰り返しログインしようとしましたが、できませんでした。イベントビューアには、クライアントマシンがSQL Serverにログインしようとしているが、ホストマシンによって拒否されているという同じことを示すエントリが大量にあります。それが私が今焦点を当てている角度であり、問​​題があると思うところです。

ありがとう、

于 2012-09-05T17:07:33.530 に答える
1

エラーから、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 以外のアイデアはありません。

于 2012-03-26T08:37:49.933 に答える
0

Arun-データベースのバージョンとドライバーのバージョンを教えていただければ、詳細をお知らせします。また、これをVerticaの公式コミュニティフォーラムに投稿してみるかもしれません。

http://my.vertica.com/forums/forum/application-and-tools-area/client-drivers/

私があなたの問題が何であるかを推測しなければならなかったならば、私はそれがこの投稿に関連しているかもしれないと思います:

http://my.vertica.com/forums/topic/odbc-on-linux-issue/

...具体的には「ODBCInstLib」に関する最後のコメント。

于 2012-04-07T15:40:21.323 に答える