2009-07-21 12 views
2

Ich muss eine Verbindung zu einem Ingres Demodb durch OpenAPI, beide Ingres und C-Anwendung läuft auf Windows. Was ich getan habe:Anschluss von Ingres von C

  1. Erstellt einen "Knoten" im Ingres Network Utility namens "usernode".
  2. erstellt Benutzerkonten in der Ingres-Installation (mit dem Namen "Benutzer" Passwort "Benutzer") und in der Windows-Benutzerverwaltung (die gleichen Kredits.)
  3. Gewährte erforderlichen Berechtigungen für den Benutzer in der Datenbank.
  4. Im C-Code habe ich IIapi_connect() -Funktion mit einer IIAPI_CONNPARM Struktur aufgerufen. Gebrauchte Mitglieder: co_target = "usernode :: demodb", co_username = "user", co_password = "user"

Aber IIapi_connect() Aufruf gibt einen Fehler zurück:

„Benutzer bereitgestellt ein vnode als Teil des Datenbanknamens (vnode :: dbname), Verbindungsinformationen für diesen vnode fehlen jedoch. Geben Sie Verbindungsinformationen für den vnode mit NETUTIL ein. "

Jeder weiß etwas, das ein seltsames Konzept "Knoten" ist?

Was sind die minimalen Schritte (in der Datenbankverwaltung und den Funktionsparametern), die für die erfolgreiche Verbindung notwendig sind?

Antwort

2

Sie erhalten den folgenden Fehler, weil Ihre Benutzer-ID nicht zum Server hinzugefügt wurde.

"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."

Ich vermute, dass der Benutzer-ID über definiert ist, in dem virtuellen Knoten geleitet wird (auch bekannt als V-Knoten) Definition und es ist, dass Benutzer, die auf dem Server die Benutzerliste hinzugefügt werden muss.Im Folgenden wird ein Benutzer über die Befehlszeile hinzufügen, NUTZERNAME Sie den Benutzernamen ändern hinzufügen möchten:

Für Windows:

echo "create user USERNAME\g" | sql iidbdb 

Für UNIX/Linux/OS X:

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

Alternativ können Sie in Ihrer Verbindung einen dynamischen V-Knoten verwenden, so dass co_target alle Verbindungsinformationen (einschließlich Benutzerdetails) angibt:

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

zum Beispiel

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

Wenn Sie ein funktionierendes Beispiel für OpenAPI-Code für Ingres einen Blick auf die Ingres PECL Erweiterung zu sehen.

1
  1. Sie müssen ein Konto mit Passwort im Betriebssystem erstellen.
  2. Sie müssen einen Knoten mit demselben Benutzernamen und Kennwort wie im Betriebssystem erstellen. Vergessen Sie nicht, den Parameter "Remote Node" im Block "Connection Information" zB auf "localhost" (!) Zu setzen. Es ist eine echte Adresse (!). Parameter "Listen Address" wird intern in einen Port konvertiert. Lass es "II".
  3. In der VDBA haben Sie wahrscheinlich ein "Benutzer" -Konto innerhalb des ADMIN NODE erstellt. Also sollte dieses Konto KEIN PASSWORT (!) Haben. Sie können es löschen, indem Sie die bestehende Passwort-Checkbox "Altes Passwort löschen" eingeben.
  4. Für eine Autorisierung müssen normalerweise die Anmeldeinformationen des Prozesses verwendet werden.
  5. Also, lassen Sie nur Benutzer :: Demodb-Parameter co_target = "usernode :: demodb".

Haben Sie Fragen?