10

私は以下を使用しています:

DRIVER={Vertica ODBC Driver 4.1};
SERVER=lnxtabdb01.xxxx.com;
PORT=5433;
DATABASE=vertica;
USER=dbadmin;
PASSWORD=vertica;
OPTION=3;

このエラーが発生しました。他の考えられる問題を確認する前に、接続文字列が正常であることを確認したかっただけです。

エラー:

EnvironmentError: System.Data.Odbc.OdbcException (0x80131937): ERROR [28000] FATAL: no Vertica user name specified in startup packet

更新: 今のところ、使用できる Windows Vista のシステム データ ソース名を使用しています。しかし、この方法で Vertica DB に接続するすべてのマシンで odbc 接続文字列を設定する必要がないように、odbc 接続文字列があるかどうかを知りたいです。

さて、私は次のようなpostgresql接続文字列を試しました:

Host=lnxtabdb01.xxxx.com;
Port=5433;
Database=vertica;
User ID=dbadmin;
Password=vertica;
Pooling=true;
OPTION=3;
Min Pool Size=0;
Max Pool Size=100;
Connection Lifetime=0;

今、私はこれを取得しています:

EnvironmentError: System.Data.Odbc.OdbcException (0x80131937): ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
4

6 に答える 6

9

ODBC driver受け入れられた回答は、 System を使用して Vertica に接続する方法を説明していますDSN。接続文字列のみを使用して接続し、ドライバーに対して接続を直接構成することができます。次の接続文字列パターンは、 に対してテストされていますVertica ODBC Client Driver v6.1.2

Driver=Vertica;Server=MyVerticaServer;Port=5433;Database=MyVerticaDB;UID=foo;PWD=bar

ポートはオプションです:

Driver=Vertica;Server=MyVerticaServer;Database=MyVerticaDB;UID=foo;PWD=bar

または、私のように .NET でこれを行っている場合は、これを使用して、必要なパラメーターから接続文字列をフォーマットできます。

var connectionString = string.Format(
            "Driver=Vertica;Server={0};{1}Database={2};UID={3};PWD={4}",
            server,
            port == null ? string.Empty : string.Format("Port={0};", port),
            database,
            username,
            password);
于 2013-07-02T09:15:45.287 に答える
5

私も、DSN なしで ODBC を使用する方法を見たことがありません。Linux ワークステーションの DSN 設定は次のとおりです。

[VerticaDSN]
Description = VerticaDSN ODBC driver
Driver = /opt/vertica/lib64//libverticaodbc_unixodbc.so
Database = Retail
Servername = localhost
UserName = vertica
Password =
Port = 5433
于 2011-06-17T16:07:23.030 に答える
2

以下を含む接続文字列を使用して、データ ソース名 (DSN) を構成/指定せずに、Vertica ODBC データ ソースに接続できます。

  • ウィンドウズ:

    Driver=Vertica ODBC Driver 4.1;Servername=hostname;Port=5433;Database=vertica;UserName=dbadmin;Password=sekret

  • Linux/Unix

    Driver=Vertica;Servername=hostname;Port=5433;Database=vertica;UserName=dbadmin;Password=sekret

valueイタリック体の各イタリック体は、環境に適したものに置き換えてください。(注:接続文字列のペアは大文字と小文字が区別されるようです。)name=value

于 2012-02-07T19:12:55.880 に答える
1

http://www.connectionstrings.com/を見ましたか? 特に Vertica DB がリストされているわけではありませんが、vertica に十分に類似している可能性のある他のデータベース タイプが多数あり、それらは適切に変換されます....

于 2011-04-28T13:51:39.023 に答える
1

ODBC を使用するときは、常に Windows を使用して DSN を設定していました。ただし、私の唯一の提案は、Vertica のさまざまな種類の問題に対する一般的な提案であり、PostgreSQL の ODBC 形式を試すことです。

内部にないもののほとんどは PostgreSQL に基づいており、特に SQL 構文と関数がベースになっています。したがって、前述のhttp://www.connectionstrings.comにアクセスして検索しますが、PostgreSQL はそれを行います。

于 2011-04-28T15:21:39.987 に答える
1

わかりました。Vertica のドキュメントを検索していますが、DSN を作成せずに ODBC に接続する方法が見つかりません。JDBC は別の問題のようです。それを行う方法がある場合、私はそれを見ていません。

問題は、接続文字列が Vertica ドライバーによって処理される必要があることをシステムが認識していないことです (ドライバーがあると仮定します)。DSN にはそれが既に指定されているため、それが機能するのです (私の経験に基づいた推測です)。

これは、JDBC の例です。

"jdbc:vertica://server:port/db?user=username&password=password&ssl=true"

JDBC 接続文字列は、Vertica を使用する必要があることをコードに知らせているようです。

ODBCに関する関連文書の一部を投稿させてください(フォーマットを許してください):

DSN パラメータ

次の表のパラメータは、すべてのユーザーおよびシステム DSN エントリに共通です。提供されている例は、Windows クライアント用です。

DSN パラメータを編集するには:

* UNIX and Linux users can edit the odbc.ini file. (See Creating an ODBC DSN for Linux and Solaris Clients.) The location of this file is specific to the driver manager.
* Windows users can edit the DSN parameters directly by opening the DSN entry in the Windows registry (for example, at HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\vmartdb). However, the Vertica-preferred method is to follow the steps in Creating an ODBC DSN for Windows Clients.
* Parameters can be set while making the connection using SQLDriverConnect().

  sqlRet = SQLDriverConnect(sql_hDBC, 0, (SQLCHAR*)"DSN=VerticaSQL;BinaryDataTransfer=1",

  SQL_NTS, szDNS, 1024,&nSize, SQL_DRIVER_NOPROMPT);



  Note: In the connection string ';' is a reserved symbol. If you need to set multiple parameters as part of ConnSettings parameter use '%3B' in place of ';'. Also use '+' instead of spaces.

  For Example:

  sqlRet = SQLDriverConnect(sql_hDBC, 0, (SQLCHAR*)"DSN=VerticaSQL;BinaryDataTransfer=1;ConnSettings=

  set+search_path+to+a,b,c%3 Bset+locale=ch;SSLMode=prefer", SQL_NTS,

  szDNS, 1024,&nSize, SQL_DRIVER_NOPROMPT);



* Parameters can also be set and retrieved after the connection has been made using SQLConnect(). Parameters can be set and retrieved using SQLSetConnectAttr(),SQLSetStmtAttr(), SQLGetConnectAttr() and SQLGetStmtAttr() API calls. 
于 2011-04-28T18:08:43.307 に答える