다음을 통해 공유


게이트웨이 진단 예제

게이트웨이 아키텍처에서 드라이버는 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."