Question

J'utilise ce qui suit:

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

Je reçois cette erreur et je voulais juste vous assurer que était ma chaîne de connexion froide avant de vérifier d'autres questions possibles.

Erreur:

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

Mise à jour: Pour l'instant je suis juste en utilisant une source de données système dans Windows Vista que je peux utiliser. Mais je voudrais encore savoir s'il y a une chaîne de connexion odbc afin que je ne dois pas mettre en place que sur toutes les machines qui se connectera à la Vertica DB de cette façon.

bien, j'ai essayé une chaîne de connexion postgresql qui ressemble à ceci:

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;

Maintenant, je reçois ceci:

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

La solution

Moi aussi, je l'ai pas vu un moyen d'utiliser ODBC sans DSN. Voici mes paramètres DSN pour mon poste de travail Linux.

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

Autres conseils

La réponse acceptée décrit un moyen de se connecter avec le ODBC driver Vertica à l'aide d'un système DSN. Il est possible de se connecter en utilisant seulement une chaîne de connexion pour configurer directement la connexion contre le conducteur. Le modèle de chaîne de connexion suivante a été testé contre le Vertica ODBC Client Driver v6.1.2:

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

Port est facultative:

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

Ou, si vous faites cela dans .NET comme je suis, vous pouvez l'utiliser pour formater la chaîne de connexion à partir des paramètres nécessaires:

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

Vous pouvez vous connecter à une source de données ODBC Vertica sans configurer / spécifier un nom de source de données (DSN) en utilisant une chaîne de connexion qui comprend les éléments suivants:

  • 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

Remplacer chaque value avec les valeurs appropriées en italique à votre environnement. (Note:. Les paires de name=value dans la chaîne de connexion semblent pour être sensible à la casse)

Avez-vous regardé http://www.connectionstrings.com/ ? Il n'a pas spécifiquement un Vertica DB répertorié mais il des dizaines d'autres types de bases de données qui pourraient être assez semblables à Vertica qu'ils se traduiront bien ....

Lorsque vous utilisez ODBC j'utilise toujours Windows et la mise en place d'un DSN. Cependant, ma seule suggestion, et ce serait une suggestion générale pour différents types de problèmes dans Vertica, serait d'essayer le format ODBC pour PostgreSQL.

La plupart du temps tout ce qui est pas sous le capot est basé sur PostgreSQL, en particulier la syntaxe SQL et les fonctions. Donc, je voudrais aller à ce qui précède http://www.connectionstrings.com et rechercher cependant PostgreSQL fait.

Ok, je suis à la recherche dans la documentation Vertica et je ne vois aucune façon de se connecter avec ODBC sans créer une source de données. JDBC semble être une autre affaire. S'il y a une façon de le faire, je ne suis pas le voir.

Le problème semble être (en supposant que vous avez le pilote) que le système ne sait pas que la chaîne de connexion doit être manipulé par le conducteur Vertica. Une source de données a déjà précisé que, de sorte que de la raison pour laquelle que les travaux (ma supposition).

Ceci est l'exemple qu'ils donnent pour JDBC:

"jdbc: Vertica: // serveur: port / db user = nom d'utilisateur et mot de passe = mot de passe et ssl = true"

La chaîne de connexion JDBC semble laisser le savoir de code qu'il devrait utiliser Vertica.

Permettez-moi de partie après du document pertinent (pardonnez la mise en forme) en ce qui concerne ODBC:

Paramètres DSN

Les paramètres dans les tableaux suivants sont communs pour toutes les entrées DSN utilisateur et système. Les exemples fournis sont pour les clients Windows.

Pour modifier les paramètres 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. 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top