Поделиться через


Пример диагностики драйверов на основе СУБД

Драйвер на основе СУБД отправляет запросы в СУБД и возвращает сведения приложению через диспетчер драйверов. Так как драйвер является компонентом, который взаимодействует с диспетчером драйверов, он форматирует и возвращает аргументы для SQLGetDiagRec.

Например, если при использовании SQL/Services драйвер Microsoft для Oracle Rdb обнаружил недопустимое имя курсора, он может вернуть следующие значения из SQLGetDiagRec:

SQLSTATE:         "34000"  
Native Error:      0  
Diagnostic Msg:   "[Microsoft][ODBC Rdb Driver]Invalid cursor name: EMPLOYEE_CURSOR."  

Так как ошибка произошла в драйвере, он добавил префиксы в диагностическое сообщение поставщика ([Майкрософт]) и драйвер ([ДРАЙВЕР RDB ODBC]).

Если СУБД не удалось найти таблицу EMPLOYEE, драйвер может форматировать и возвращать следующие значения из SQLGetDiagRec:

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

Так как ошибка произошла в источнике данных, драйвер добавил префикс для идентификатора источника данных ([Rdb]) в диагностическое сообщение. Так как драйвер был компонентом, интерфейсируемым с источником данных, он добавил префиксы для своего поставщика ([Майкрософт]) и идентификатор ([драйвер RDB ODBC]) в диагностическое сообщение.