2009-07-21 5 views
2

Je dois me connecter à une démodb fournie par Ingres via OpenAPI, les applications Ingres et C s'exécutant sur Windows. Ce que j'ai fait:Connexion Ingres à partir de C

  1. Créé un "noeud" dans l'utilitaire réseau Ingres nommé "usernode".
  2. Création de comptes utilisateur dans l'installation Ingres (nommé "utilisateur" mot de passe "utilisateur") et dans la gestion des utilisateurs Windows (mêmes cred.)
  3. Accorder les privilèges nécessaires à l'utilisateur dans la base de données.
  4. En code C, j'ai appelé la fonction IIapi_connect() avec une structure IIAPI_CONNPARM. membres: occasion co_target = "usernode :: demodb", co_username = "user", co_password = "user"

Mais appel IIapi_connect() renvoie une erreur:

« fourni par l'utilisateur un vnode dans le nom de la base de données (vnode :: dbname), mais les informations de connexion pour ce vnode sont manquantes Entrez les informations de connexion pour le vnode en utilisant NETUTIL. "

Quelqu'un sait quelque chose qui est un concept étrange "noeud"?

Quelles sont les étapes minimales (dans l'administration de la base de données et la transmission des paramètres de fonction) nécessaires pour la connexion réussie?

Répondre

2

Vous obtenez l'erreur suivante car votre ID utilisateur n'a pas été ajouté au serveur.

"User provided a vnode as part of the database name (vnode::dbname), but connection information for that vnode is missing. Enter connection information for the vnode using NETUTIL."

Je devine que l'ID utilisateur étant passé à travers est défini dans le nœud virtuel (alias vnode) définition et il est l'utilisateur qui doit être ajouté à la liste des utilisateurs sur le serveur.Ce qui suit ajouter un utilisateur à partir de la ligne de commande, changer USERNAME au nom d'utilisateur que vous souhaitez ajouter:

Pour Windows:

echo "create user USERNAME\g" | sql iidbdb 

Pour UNIX/Linux/OS X:

sql iidbdb <<EOSQL 
create user USERNAME\g 
\q 

Vous pouvez également utiliser un vnode dynamique dans votre connexion de telle sorte que co_target spécifie toutes les informations de connexion (y compris les détails de l'utilisateur):

@server,protocol,listen_address[user,password]::database 

par exemple

@localhost,tcp_ip,II[ingres,secret]::iidbdb 

Si vous voulez voir un exemple de travail de code pour Ingres OpenAPI jeter un oeil à l'extension Ingres PECL.

1
  1. Vous devez créer un compte WITH password dans le système d'exploitation.
  2. Vous devez créer un noeud avec le nom d'utilisateur et le mot de passe SAME comme dans le système d'exploitation. N'oubliez pas d'affecter le paramètre "Remote Node" dans le bloc "Connection Information" à "localhost" (!) Par exemple. C'est une adresse réelle (!). Le paramètre "Listen Address" est converti en port interne. Laissez-le "II".
  3. Dans l'adaptateur VDBA, vous avez probablement créé un compte "utilisateur" à l'intérieur du nœud Admin. Donc, ce compte NE DEVRAIT PAS avoir de MOT DE PASSE (!). Vous pouvez le supprimer en entrant le mot de passe existant dans la case à cocher "Supprimer l'ancien mot de passe".
  4. Pour une autorisation, normalement utiliser les informations d'identification du processus.
  5. Donc, laissez seulement le paramètre utilisateur :: demodb co_target = "usernode :: demodb".

Des questions?

Questions connexes