-
Le connecteur de base de données IBM Db2, quand vous utilisez le pilote IBM Db2 pour .NET, ne fonctionne pas avec les systèmes Mainframe ou IBM i
-
Ne prend pas en charge DirectQuery
Microsoft prend en charge le pilote Microsoft, mais pas pour le pilote IBM. Toutefois, si votre service informatique l’a déjà configuré et configuré sur vos machines, votre service informatique doit savoir comment dépanner le pilote IBM.
Requêtes natives non prises en charge dans DirectQuery
Lorsque vous sélectionnez DirectQuery comme mode de connectivité des données dans Power Query Desktop, la zone de texte de l’instruction SQL dans les options avancées est désactivée. Elle est désactivée, car le connecteur Power Query IBM Db2 ne prend pas actuellement en charge la transmission push de requêtes au-dessus d’une requête de base de données native.
Dépannage
Vérifier que le pilote IBM Db2 est installé
Si vous choisissez d’utiliser le pilote IBM Db2 pour Power Query Desktop, vous devez d’abord télécharger, installer et configurer le pilote sur votre ordinateur. Pour vous assurer que le pilote IBM Db2 a été installé :
-
Ouvrez Windows PowerShell sur votre ordinateur.
-
Entrez la commande suivante :
[System.Data.Common.DbProviderFactories]::GetFactoryClasses() | ogv
-
Dans la boîte de dialogue qui s’ouvre, vous devez voir le nom suivant dans la colonne
InvariantName
:
IBM.Data.DB2
Si ce nom se trouve dans la colonne
InvariantName
, le pilote IBM Db2 a été installé et configuré correctement.
Codes d’erreur SQLCODE -805 et SQLCODE -551
Lorsque vous tentez de vous connecter à une base de données IBM Db2, vous pouvez parfois rencontrer l’erreur courante SQLCODE -805, ce qui indique que le package n’est pas trouvé dans la collection
NULLID
ou une autre collection (spécifiée dans la configuration
Connexion de package
de Power Query). Vous pouvez également rencontrer l’erreur courante SQLCODE -551, ce qui indique que vous ne pouvez pas créer de packages, car vous n’avez pas d’autorité de liaison de package.
En règle générale, SQLCODE -805 est suivi de SQLCODE -551, mais vous ne verrez que la deuxième exception. En réalité, le problème est le même. Vous n’avez pas l’autorisation de lier le package la collection
NULLID
ou autre collection spécifiée.
En règle générale, la plupart des administrateurs IBM Db2 ne fournissent pas d’autorité de package de liaison aux utilisateurs finaux, en particulier dans un environnement IBM z/OS (ordinateur central) ou IBM i (AS/400). Db2 sur Linux, Unix ou Windows est différent dans le cas où les comptes d’utilisateur disposent de privilèges de liaison par défaut, ce qui crée le package MSCS001 (Cursor Stability) dans la propre collection de l’utilisateur (nom = nom de connexion utilisateur).
Si vous n’avez pas de privilèges de package de liaison, vous devez demander à votre administrateur Db2 d’obtenir l’autorité de liaison de package. Avec cette autorité de liaison de package, connectez-vous à la base de données et extrayez les données, ce qui crée automatiquement le package. Ensuite, l’administrateur peut révoquer l’autorité de liaison d’empaquetage. Par ailleurs, par la suite, l’administrateur peut « lier la copie » du package à d’autres collections, afin d’augmenter la concurrence, afin de mieux correspondre à vos normes internes pour l’endroit où les packages sont liés, et ainsi de suite.
Lors de la connexion à IBM Db2 pour z/OS, l’administrateur Db2 peut effectuer les étapes suivantes.
-
Accordez l’autorité pour lier un nouveau package à l’utilisateur avec l’une des commandes suivantes :
-
GRANT BINDADD ON SYSTEM TO <
authorization_name
>
-
GRANT PACKADM ON <
collection_name
> TO <
authorization_name
>
-
À l’aide de Power Query, connectez-vous à la base de données IBM Db2 et récupérez une liste de schémas, de tables et de vues. Le connecteur de base de données IBM Db2 Power Query crée automatiquement le NULLID du package. MSCS001, puis accordez l’exécution sur le package au public.
-
Révoquez l’autorité pour lier un nouveau package à l’utilisateur avec l’une des commandes suivantes :
-
REVOKE BINDADD FROM <
authorization_name
>
-
REVOKE PACKADM ON <
collection_name
> FROM <
authorization_name
>
Lors de la connexion à IBM Db2 pour Linux, Unix, ou Windows, l’administrateur Db2 peut effectuer les étapes suivantes.
-
GRANT BINDADD ON DATABASE TO USER <
authorization_name
>.
-
À l’aide de Power Query, connectez-vous à la base de données IBM Db2 et récupérez une liste de schémas, de tables et de vues. Le connecteur IBM Db2 Power Query crée automatiquement le NULLID du package. MSCS001, puis accordez l’exécution sur le package au public.
-
REVOKE BINDADD ON DATABASE FROM USER <
authorization_name
>.
-
GRANT EXECUTE ON PACKAGE <
collection.package
> TO USER <
authorization_name
>.
Lors de la connexion à IBM Db2 pour i, l’administrateur Db2 peut effectuer les étapes suivantes.
-
WRKOBJ QSYS/CRTSQLPKG. Tapez « 2 » pour modifier l’autorité de l’objet.
-
Modifiez l’autorité de *EXCLUDE en PUBLIC ou <
authorization_name
>.
-
Ensuite, remplacez l’autorité par *EXCLUDE.
Code d’erreur SQLCODE -360
Lorsque vous tentez de vous connecter à la base de données IBM Db2, vous pouvez rencontrer l’erreur suivante :
Microsoft Db2 Client: The host resource could not be found. Check that the Initial Catalog value matches the host resource name. SQLSTATE=HY000 SQLCODE=-360
Ce message d’erreur indique que vous n’avez pas placé la valeur appropriée pour le nom de la base de données.
Code d’erreur SQLCODE -1336
The specified host could not be found.
Vérifiez le nom et vérifiez que l’hôte est accessible. Par exemple, utilisez
ping
dans une invite de commandes pour tenter d’atteindre le serveur et vérifier que l’adresse IP est correcte ou utilisez
telnet
pour communiquer avec le serveur.
Code d’erreur SQLCODE -1037
Host is reachable, but is not responding on the specified port.
Le port est spécifié à la fin du nom du serveur, séparé par un signe deux-points. En cas d’omission, la valeur par défaut de 50000 est utilisée.
Pour rechercher le port Db2 est utilisé pour Linux, Unix et Windows, exécutez cette commande :
db2 get dbm cfg | findstr SVCENAME
Recherchez dans la sortie une entrée pour SVCENAME (et SSL_SVCENAME pour les connexions chiffrées TLS). Si cette valeur est un nombre, il s’agit du port. Sinon, faites référence à la valeur avec la table « services » du système. Vous pouvez généralement le trouver à l’adresse /etc/services, ou à c:\windows\system32\drivers\etc\services pour Windows.
La capture d’écran suivante montre la sortie de cette commande dans Linux/Unix.
La capture d’écran suivante montre la sortie de cette commande dans Windows.
Déterminer le nom de la base de données
Pour déterminer le nom de la base de données à utiliser :
-
Sur IBM i, exécutez
DSPRDBDIRE
.
-
L’une des entrées aura un
emplacement distant
de *
LOCAL
. Cette entrée est celle à utiliser.
Déterminer le numéro de port
Le pilote Microsoft se connecte à la base de données à l’aide du protocole DRDA (Distributed Relational Database Architecture). Le port par défaut pour DRDA est le port 446. Essayez d’abord cette valeur.
Pour trouver le port sur lequel le service DRDA s’exécute :
-
Exécutez la commande IBM i
WRKSRVTBLE
.
-
Faites défiler vers le bas jusqu’à ce que vous trouviez les entrées pour DRDA.
-
Pour vérifier que le service DRDA est en cours d’écoute sur ce port, exécutez
NETSTAT
.
-
Choisissez l’option 3 (pour IPv4) ou l’option 6 (pour IPv6).
-
Appuyez sur F14 pour afficher les numéros de port au lieu des noms, puis faites défiler jusqu’à ce que vous voyiez le port en question. Elle doit avoir une entrée avec l’état « Écouter ».
-
HIS - Fournisseur OLE DB Microsoft pour DB2