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


Диагностические сообщения

При каждом SQLSTATE возвращается диагностическое сообщение. Один и тот же SQLSTATE часто возвращается с несколькими различными сообщениями. Например, SQLSTATE 42000 (синтаксическая ошибка или нарушение доступа) возвращается для большинства ошибок в синтаксисе SQL. Однако каждая синтаксическая ошибка, скорее всего, будет описана другим сообщением.

Примеры диагностических сообщений перечислены в столбце "Ошибка" в таблице SQLSTATEs в приложении A и каждой функции. Хотя драйверы могут возвращать эти сообщения, они, скорее всего, возвращают все сообщения, передаваемые им источником данных.

Приложения обычно отображают диагностические сообщения пользователю вместе с КОДОМ SQLSTATE и машинной ошибкой. Это помогает пользователю и персоналу поддержки определить причину любых проблем. Сведения о компоненте, внедренные в сообщение, особенно полезны для этого.

Диагностические сообщения приходят из источников данных и компонентов подключения ODBC, таких как драйверы, шлюзы и диспетчер драйверов. Как правило, источники данных напрямую не поддерживают ODBC. Следовательно, если компонент в подключении ODBC получает сообщение из источника данных, он должен определить источник данных в качестве источника сообщения. Он также должен идентифицировать себя как компонент, который получил сообщение.

Если источником ошибки или предупреждения является сам компонент, то диагностическое сообщение должно объяснить это. Таким образом, текст сообщений имеет два разных формата. Для ошибок и предупреждений, которые не происходят в источнике данных, диагностическое сообщение должно использовать следующий формат:

[ идентификатор поставщика ][ ODBC-component-identifier ] component-supplied-text

Для ошибок и предупреждений, возникающих в источнике данных, диагностическое сообщение должно использовать следующий формат:

[ идентификатор поставщика ][ ODBC-component-identifier ][ data-source-identifier ] data-source-supplied-text

В следующей таблице показано значение каждого элемента.

Элемент Значение
идентификатор поставщика Идентифицирует поставщика компонента, в котором произошла ошибка или предупреждение или которое получило ошибку или предупреждение непосредственно из источника данных.
ИДЕНТИФИКАТОР КОМПОНЕНТА ODBC Определяет компонент, в котором произошла ошибка или предупреждение, или он получил ошибку или предупреждение непосредственно из источника данных.
идентификатор источника данных Определяет источник данных. Для драйверов на основе файлов обычно это формат файла, например Xbase[1] для драйверов на основе СУБД, это продукт СУБД.
предоставленный компонентом текст Создается компонентом ODBC.
предоставленный источником данных текст Создается источником данных.

[1] В этом случае драйвер выступает как драйвером, так и источником данных.

Квадратные скобки ([ ]) должны быть включены в сообщение и не указывают необязательные элементы.