Кто -нибудь знает формат строки соединения ODBC для Vertica?

StackOverflow https://stackoverflow.com/questions/5807510

  •  24-10-2019
  •  | 
  •  

Вопрос

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

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, которое я могу использовать. Но я все равно хотел бы знать, есть ли строка подключения 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
Это было полезно?

Решение

Я тоже не видел никакого способа использовать 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

Другие советы

Принятый ответ описывает способ связаться с 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);

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

  • Windows:

    Driver=Vertica ODBC Driver 4.1;Servername=имя хоста;Port=5433;Database=Вертика;UserName=дбадмин;Password=Sekret

  • Linux/Unix

    Driver=Vertica;Servername=имя хоста;Port=5433;Database=Вертика;UserName=дбадмин;Password=Sekret

Замените каждый курсив ценность с теми, кто подходит для вашей среды. (Обратите внимание name=ценность пары в строке подключения казаться быть чувствительным к случаям.)

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

При использовании ODBC я всегда использовал Windows и настраивал DSN. Тем не менее, мое единственное предложение, и это было бы общим предложением для многих различных типов проблем в Vertica, было бы попробовать формат ODBC для PostgreSQL.

В основном все, что не поднимается, основано на PostgreSQL, особенно синтаксисе и функциях SQL. Так что я бы пошел в вышеупомянутое http://www.connectionstrings.com И посмотрите, как это делает PostgreSQL.

Хорошо, я ищу документацию Vertica, и я не вижу никакого способа общения с ODBC, не создавая DSN. 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. 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top