在閘道架構中,驅動程式會向支援 ODBC 的閘道發送請求。 閘道器會將請求傳送到資料庫管理系統(DBMS)。 由於它是與驅動程式管理器介面的元件,驅動程式會格式化並回傳 SQLGetDiagRec 的參數。
例如,若 Oracle 以 Microsoft Open Data Services 為基礎建立 Rdb 閘道,且 Rdb 找不到 EMPLOYEE 表,閘道可能會產生以下診斷訊息:
"[42S02][-1][DEC][ODS Gateway][Rdb]%SQL-F-RELNOTDEF, Table EMPLOYEE is not defined "
"in schema."
由於錯誤發生在資料來源,閘道器在診斷訊息中加入了資料來源識別碼([Rdb])的前綴。 由於閘道器是與資料來源介面的元件,因此在診斷訊息中加入供應商前綴([DEC])及識別碼([ODS 閘道器])。 同時,它也在診斷訊息的開頭加入了 SQLSTATE 值和 Rdb 錯誤碼。 這使得它能保留自身訊息結構的語意,同時仍能向驅動程式提供 ODBC 診斷資訊。 驅動程式解析閘道所附帶的錯誤訊息。
由於閘道驅動程式是與驅動程式管理器介面的元件,因此會使用前述診斷訊息格式化並回傳 SQLGetDiagRec 的以下數值:
SQLSTATE: "42S02"
Native Error: -1
Diagnostic Msg: "[DEC][ODS Gateway][Rdb]%SQL-F-RELNOTDEF, Table EMPLOYEE is not "
"defined in schema."