閘道診斷範例
在網路閘道架構中,驅動程式會將要求傳送至支援 ODBC 的網路閘道。 網路閘道會將要求傳送至 DBMS。 因為這是與驅動程式管理員相接的元件,因此驅動程式會設定格式並傳回 SQLGetDiagRec 的引數。
例如,如果 Oracle 在 Microsoft 開放式資料服務上設定 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."