Beispiel für die Diagnose von Gateways

In einer Gatewayarchitektur sendet ein Treiber Anforderungen an ein Gateway, das ODBC unterstützt. Das Gateway sendet die Anforderungen an ein DBMS. Da es sich um die Komponente handelt, die mit dem Treiber-Manager verbunden ist, formatiert und gibt der Treiber Argumente für SQLGetDiagRec zurück.

Wenn z. B. Oracle ein Gateway zu Rdb auf Microsoft Open Data Services und Rdb die Tabelle EMPLOYEE nicht finden konnte, generiert das Gateway möglicherweise diese Diagnosemeldung:

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

Da der Fehler in der Datenquelle aufgetreten ist, hat das Gateway der Diagnosemeldung ein Präfix für den Datenquellenbezeichner ([Rdb]) hinzugefügt. Da das Gateway die Komponente war, die mit der Datenquelle verbunden war, wurden der Diagnosemeldung Präfixe für den Hersteller ([DEC]) und den Bezeichner ([ODS-Gateway]) hinzugefügt. Außerdem wurden der SQLSTATE-Wert und der Rdb-Fehlercode am Anfang der Diagnosemeldung hinzugefügt. Dadurch konnte die Semantik der eigenen Nachrichtenstruktur beibehalten und die ODBC-Diagnoseinformationen weiterhin an den Treiber übermittelt werden. Der Treiber analysiert die Fehlerinformationen, die vom Gateway an die Error-Anweisung angefügt werden.

Da der Gatewaytreiber die Komponente ist, die mit dem Treiber-Manager verbunden ist, verwendet er die obige Diagnosemeldung, um die folgenden Werte aus SQLGetDiagRec zu formatieren und zurückzugeben:

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