1
votes

Le service AS / 400 DDM ne fonctionne pas

Je voulais établir une connexion ODBC entre un PC Windows et un serveur AS / 400 DB2 et j'ai écrit un programme VBA. Mais j'ai eu l'erreur suivante.

Command CHGDDMTCPA in library *LIBL not found

Ensuite, j'ai vérifié l'état du serveur avec CWSPING et j'ai obtenu le résultat ci-dessous:

*DDM not valid for parameter SERVER
  • Serveur: IBM AS400
  • Version du système d'exploitation: V4R1


0 commentaires

3 Réponses :


1
votes

Essayez STRHOSTSVR * DATABASE .

STRHOSTSVR est utilisé pour démarrer les serveurs associés à IBM i Access et i Access Client Solutions.

STRTCPSVR est utilisé, en général, pour démarrer des serveurs associés à TCP / IP comme FTP, Telnet, etc. Sauf le serveur HTTP qui est lancé via le site d'administration Web à http: // : 2001 .


1 commentaires

J'ai essayé STROSSER * DATABASE mais rien n'a changé. Le serveur ne semble pas avoir de service DDM / DRDA. J'ai donc utilisé une connexion JDBC qui n'utilise pas DRDA.



0
votes

En plus de la réponse de @jmarkmurphy:

  • Vous pouvez facilement vérifier netstat * cnn pour les ports ouverts.
  • Il existe en fait un tcpsvr nommé * ddm mais qui n'est pas utilisé avec ODBC.
  • ODBC-Access n'a besoin que de la base de données du serveur hôte *. Il n'y a pas d'autres exigences pour les serveurs hôtes.
  • Pour vérifier quels services sont lancés au démarrage de tcp, utilisez strfdu , option 5 avec le fichier qusrsys / qatocstart. À partir de là, vous pouvez facilement afficher et modifier ce qui doit être démarré ou non.

0 commentaires

0
votes

Enfin, je me suis connecté en utilisant JDBC. Le résumé de ce que j'ai trouvé est le suivant:

  • ODBC semble utiliser DRDA (port 446) mais le serveur n'a pas de service DRDA / DDM
  • OLEDB semble connecter l'accès aux données (port 8471) mais a émis une erreur inconnue
  • JDBC connecte également l'accès aux données (port 8471) et cela a fonctionné!

La première erreur que j'ai rencontrée lors de l'utilisation d'ODBC est "Le port distant n'a pas pu être résolu". Ce qui s'est passé derrière cela semble être le suivant:

  1. ODBC a demandé au mappeur de serveur (port 449) de trouver le port DRDA (il peut changer sur un serveur)
  2. Le mappeur de serveur n'a pas pu trouver le port DRDA car le serveur n'a pas de service DRDA
  3. ODBC a affiché une erreur "port non résolu"

Ensuite, j'ai essayé OLEDB cette fois. Il a vérifié correctement l'utilisateur / mot de passe mais a émis une erreur inconnue. Lorsque je mets un mot de passe incorrect, cela indique que "le mot de passe est incorrect", ce qui signifie que OLEDB s'est connecté avec succès au serveur mais a obtenu une erreur après la connexion.

Le dernier, j'ai utilisé JDBC et je me suis connecté avec succès! Généralement, l'URL de connexion est comme "jdbc: as400: //" mais elle a montré une erreur. En utilisant la trace de JDBC, il semble y avoir un problème lors de la connexion au serveur. J'ai donc changé l'url en "jdbc: as400: //: 8471", puis je me suis finalement connecté. En regardant dans trace, il accède directement au port 8741 et envoie un utilisateur / mot de passe et se connecte. Je ne connais pas le détail, mais ça a marché!

Merci pour votre aide!


0 commentaires