кто-нибудь знает формат строки подключения odbc для vertica? - PullRequest
9 голосов
/ 27 апреля 2011

Я использую следующее:

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

UPDATE: Пока я просто использую имя источника системных данных в Windows Vista, которое я могу использовать. Но я все еще хотел бы знать, есть ли строка подключения odbc, чтобы мне не пришлось настраивать ее на каждой машине, которая будет подключаться к Vertica DB таким способом.

хорошо, я попробовал строку подключения 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

Ответы [ 6 ]

9 голосов
/ 02 июля 2013

Принятый ответ описывает способ соединения с Vertica ODBC driver с использованием Системы 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);
5 голосов
/ 17 июня 2011

Я тоже не видел способа использовать ODBC без DSN.Вот мои настройки DSN для моей рабочей станции Linux.

[VerticaDSN]
Description = VerticaDSN ODBC driver
Driver = /opt/vertica/lib64//libverticaodbc_unixodbc.so
Database = Retail
Servername = localhost
UserName = vertica
Password =
Port = 5433
2 голосов
/ 07 февраля 2012

Вы можете подключиться к источнику данных Vertica ODBC без настройки / указания имени источника данных (DSN), используя строку подключения, которая включает следующее:

  • Windows:

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

  • Linux / Unix

    Driver=Vertica;Servername=<em>hostname</em>;Port=<em>5433</em>;Database=<em>vertica</em>;UserName=<em>dbadmin</em>;Password=<em>sekret</em>

Заменить каждый курсив <em>value</em> на соответствующийк вашей среде.(Примечание: пары name=<em>value</em> в строке подключения кажутся чувствительными к регистру.)

1 голос
/ 28 апреля 2011

Хорошо, я просматриваю документацию Vertica и не вижу никакого способа соединения с ODBC без создания DSN.JDBC, похоже, другое дело.Если есть способ сделать это, я его не вижу.

Похоже, проблема в том, что (если у вас есть драйвер) система не знает, что строка подключения должна обрабатыватьсяVertica водитель.В DSN это уже указано, поэтому это работает (мое обоснованное предположение).

Это пример, который они приводят для JDBC:

"jdbc: vertica: // сервер: порт / db? User = имя пользователя и пароль = пароль & 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. 
1 голос
/ 28 апреля 2011

При использовании ODBC я всегда использовал Windows и настраивал DSN.Однако мое единственное предложение, и это было бы общим предложением для многих различных типов проблем в Vertica, было бы попробовать формат ODBC для PostgreSQL.основанный на PostgreSQL, особенно синтаксис и функции SQL.Поэтому я бы пошел к вышеупомянутому http://www.connectionstrings.com и посмотрел бы, как это делает PostgreSQL.

1 голос
/ 28 апреля 2011

Посмотрели ли вы http://www.connectionstrings.com/? В нем нет конкретно базы данных Vertica, но есть десятки других типов баз данных, которые могут быть достаточно похожи на vertica, чтобы они хорошо переводились ....

...