Partager via


Exemple de diagnostic des passerelles

Dans une architecture de passerelle, un pilote envoie des requêtes à une passerelle prenant en charge ODBC. La passerelle envoie les requêtes à un SGBD. Étant donné qu’il s’agit du composant qui s’interface avec le Gestionnaire de pilotes, le pilote met en forme et retourne des arguments pour SQLGetDiagRec.

Par exemple, si Oracle a basé une passerelle vers Rdb sur Microsoft Open Data Services et si Rdb n’a pas pu trouver la table EMPLOYEE, la passerelle peut générer ce message de diagnostic :

"[42S02][-1][DEC][ODS Gateway][Rdb]%SQL-F-RELNOTDEF, Table EMPLOYEE is not defined "  
   "in schema."  

Étant donné que l’erreur s’est produite dans la source de données, la passerelle a ajouté un préfixe pour l’identificateur de source de données ([Rdb]) au message de diagnostic. Étant donné que la passerelle était le composant qui était interface avec la source de données, elle a ajouté des préfixes pour son fournisseur ([DEC]) et son identificateur ([passerelle ODS]) au message de diagnostic. Il a également ajouté la valeur SQLSTATE et le code d’erreur Rdb au début du message de diagnostic. Cela lui a permis de conserver la sémantique de sa propre structure de message et de fournir toujours les informations de diagnostic ODBC au pilote. Le pilote analyse les informations d’erreur attachées à l’instruction d’erreur par la passerelle.

Étant donné que le pilote de passerelle est le composant qui s’interface avec le Gestionnaire de pilotes, il utilise le message de diagnostic précédent pour mettre en forme et retourner les valeurs suivantes à partir de SQLGetDiagRec :

SQLSTATE:         "42S02"  
Native Error:      -1  
Diagnostic Msg:   "[DEC][ODS Gateway][Rdb]%SQL-F-RELNOTDEF, Table EMPLOYEE is not "  
                  "defined in schema."