2011-04-27 5 views
8

estoy usando lo siguiente:¿Alguien sabe el formato de una cadena de conexión odbc para vertica?

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

estoy recibiendo este error y yo sólo quería asegurarse de que mi cadena de conexión era fresco antes de comprobar otros problemas posibles.

error:

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

ACTUALIZACIÓN: Por ahora sólo estoy usando un nombre de origen de datos del sistema en Windows Vista que puedo usar. Pero aún me gustaría saber si hay una cadena de conexión odbc para que no tenga que configurarla en cada máquina que se conectará a la base de datos Vertica de esta manera.

bueno, lo intente una cadena de conexión PostgreSQL que tiene este aspecto:

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; 

ahora yo estoy haciendo esto:

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

Respuesta

5

también yo no he visto ninguna manera de utilizar ODBC sin DSN. Aquí está mi configuración de DSN para mi estación de trabajo Linux.

[VerticaDSN] 
Description = VerticaDSN ODBC driver 
Driver = /opt/vertica/lib64//libverticaodbc_unixodbc.so 
Database = Retail 
Servername = localhost 
UserName = vertica 
Password = 
Port = 5433 
+0

ver mi respuesta más abajo para saber cómo hacer esto con una cadena de conexión, en lugar de un DSN –

1

¿Has mirado en http://www.connectionstrings.com/? No tiene una Vertica DB enumerada específicamente, pero hay docenas de otros tipos de bases de datos que pueden ser lo suficientemente similares a la vertica que se traducirán bien ...

+0

Esto es más de un comentario que una respuesta. – Kermit

1

Al usar ODBC, siempre estaba usando Windows y configurando un DSN . Sin embargo, mi única sugerencia, y esta sería una sugerencia general para muchos tipos diferentes de problemas en Vertica, sería probar el formato ODBC para PostgreSQL.

Casi todo lo que no está bajo la cubierta se basa en PostgreSQL, especialmente la sintaxis SQL y las funciones. Así que iría al citado http://www.connectionstrings.com y lo buscaría, pero PostgreSQL sí lo hace.

+0

Otra pregunta es su instancia de base de datos llamada "vertica" o estaba tratando de especificar el tipo de base de datos. – geoffrobinson

+0

sí, la instancia de DB se llama "vertica" – Ramy

+0

Simplemente otra pregunta rápida. Asegúrese de tener instalado el último controlador vertical en su máquina. Estoy buscando documentación para ver si veo algo. – geoffrobinson

1

Ok, estoy buscando en la documentación de Vertica y no veo ninguna forma de conectarme con ODBC sin crear un DSN. JDBC parece ser un asunto diferente. Si hay una manera de hacerlo, no lo estoy viendo.

El problema parece ser (suponiendo que tenga el controlador) que el sistema no sabe que su cadena de conexión debe ser manejada por el controlador Vertica. Un DSN ya lo ha especificado, así que es por eso que funciona (mi estimación educada).

Este es el ejemplo que dan para JDBC:

La cadena de conexión JDBC "jdbc: puerto/db user = nombre de usuario password = contraseña & & ssl = true Vertica:: // servidor?" parece dejarle saber al código que debería estar usando Vertica.

me deja publicar parte del documento pertinente (perdona el formato) en relación con ODBC:

Parámetros DSN

Los parámetros en las siguientes tablas son comunes para todas las entradas DSN de usuario y del sistema. Los ejemplos proporcionados son para clientes de Windows.

Para editar los parámetros de 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. 
2

Puede conectarse a una fuente de datos Vertica ODBC sin configurar/especificar un nombre de origen de datos (DSN) utilizando una cadena de conexión que incluye lo siguiente:

  • de Windows:

    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

reemplazar cada letra cursiva value con las propias de su entorno. (Nota: los name=value pares en la cadena de conexión parecen estar entre mayúsculas y minúsculas.)

7

La respuesta aceptada describe una manera de conectar con la Vertica ODBC driver utilizando un Sistema de DSN. Es posible conectarse utilizando solo una cadena de conexión para configurar directamente la conexión contra el controlador. El siguiente patrón de cadena de conexión ha sido probado en contra de la Vertica ODBC Client Driver v6.1.2:

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

puerto es opcional:

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

O, si usted está haciendo esto en .NET como soy, usted puede usar esto para Formatear la cadena de conexión a partir de los parámetros necesarios:

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); 
+0

Esta es probablemente la respuesta correcta, pero ya no trabajo con vertica, así que no puedo verificar que funcione. Tal vez alguien más puede verificar esto? – Ramy

+0

Hola, @Ramy, he probado esto con la versión mencionada del controlador ODBC de Vertica, de hecho se ejecuta regularmente como parte de una compilación de integración en un entorno de prueba Vertica. –

+0

Puedo confirmar que funciona bien. Gracias @JonG – hbn

Cuestiones relacionadas