Domanda

sto usando il seguente:

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

sto ottenendo questo errore e volevo solo fare in modo che la mia stringa di connessione era fresca prima di controllare altri possibili problemi.

errore:

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

UPDATE: Per ora sto solo utilizzando un nome origine dati di sistema in Windows Vista che posso usare. Ma mi piace ancora di sapere se c'è una stringa di connessione ODBC in modo che io non devo configurare il monitoraggio su tutte le macchine che saranno la connessione alla Vertica DB in questo modo.

bene, ho provato una stringa di connessione PostgreSQL che assomiglia a questo:

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;

ora sto ricevendo in questo modo:

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

Soluzione

Anche io non hanno visto alcun modo per utilizzare ODBC senza un DSN. Ecco le mie impostazioni DSN per la mia workstation Linux.

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

Altri suggerimenti

La risposta accettata descrive un modo per connettersi con il ODBC driver Vertica utilizzando un DSN sistema. E 'possibile collegare utilizzando solo una stringa di connessione per configurare direttamente la connessione contro il conducente. Il modello seguente stringa di connessione è stato testato contro il Vertica ODBC Client Driver v6.1.2:

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

Port è facoltativo:

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

In alternativa, se si sta facendo questo in .NET come lo sono io, è possibile utilizzare questo per formattare la stringa di connessione a partire dai parametri necessari:

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

È possibile collegare ad una fonte di dati ODBC Vertica senza configurare / specificare un Data Source Name (DSN) utilizzando una stringa di connessione che include quanto segue:

  • 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

Sostituire ogni value corsivo con quelli appropriati per l'ambiente. (Nota:. Le coppie name=value nella stringa di connessione sembrano di essere maiuscole e minuscole)

Hai guardato http://www.connectionstrings.com/ ? Non ha specificamente un Vertica DB elencato ma ci decine di altri tipi di database che potrebbero essere abbastanza simili a Vertica che si tradurranno bene ....

Quando si utilizza ODBC ero sempre usando Windows e la creazione di un DSN. Tuttavia, il mio unico suggerimento, e questo sarebbe un suggerimento generale per molti diversi tipi di problemi a Vertica, sarebbe quello di provare il formato ODBC per PostgreSQL.

Per lo più tutto ciò che non è sotto il cofano è basata su PostgreSQL, in particolare sintassi SQL e funzioni. Quindi, vorrei andare al già citato http://www.connectionstrings.com e cercare comunque PostgreSQL fa.

Ok, sto cercando attraverso la documentazione Vertica e non sto vedendo alcun modo di collegamento con ODBC senza creare un DSN. JDBC sembra essere una questione diversa. Se c'è un modo per farlo, non sto vedendo esso.

Il problema sembra essere (ammesso che abbiate il driver) che il sistema non sa che la stringa di connessione dovrebbe essere gestita dal driver Vertica. Un DSN ha già specificato, ecco perché che le opere (la mia supposizione).

Questo è l'esempio che danno per JDBC:

"jdbc: Vertica: // server:? Port / db user = username & password = password & ssl = true"

La stringa di connessione JDBC sembra lasciare che il codice di sapere che si dovrebbe usare Vertica.

Fammi parte posta del documento pertinente (perdonate la formattazione) per quanto riguarda ODBC:

DSN Parametri

I parametri nelle seguenti tabelle sono comuni per tutte le voci DSN utente e di sistema. Gli esempi forniti sono per i client Windows.

Per i parametri DSN modificare:

* 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. 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top