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 schnittstellen, werden die Treiberformate formatiert und Argumente für SQLGetDiagRec zurückgegeben.

Wenn Oracle beispielsweise ein Gateway zu Rdb auf Microsoft Open Data Services basiert 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 Diagnosenachricht ein Präfix für den Datenquellenbezeichner ([Rdb]) hinzugefügt. Da es sich bei dem Gateway um die Komponente handelte, die mit der Datenquelle schnittstelle, wurden der Diagnosenachricht Präfixe für den Anbieter ([DEC]) und den Bezeichner ([ODS-Gateway]) hinzugefügt. Außerdem wurde der SQLSTATE-Wert und der Rdb-Fehlercode am Anfang der Diagnosenachricht hinzugefügt. Dies erlaubte es, die Semantik der eigenen Nachrichtenstruktur beizubehalten und weiterhin die ODBC-Diagnoseinformationen an den Treiber zu übermitteln. Der Treiber analysiert die Fehlerinformationen, die der Fehleranweisung vom Gateway zugeordnet sind.

Da es sich bei dem Gatewaytreiber um die Komponente handelt, die mit dem Treiber-Manager interagiert, wird die vorangehende Diagnosemeldung verwendet, 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."