Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Когда приложение вызывает функцию ODBC, драйвер выполняет функцию и возвращает диагностические сведения двумя способами: код возврата указывает на общий успех или сбой функции ODBC, а диагностические записи предоставляют подробные сведения о функции. Диагностические записи включают запись заголовка и записи состояния. По крайней мере одна диагностическая запись, запись заголовка, возвращается, даже если функция выполнена успешно.
Диагностические сведения используются во время разработки для перехвата ошибок программирования, таких как недопустимые дескриптора и синтаксические ошибки в жестко закодированных инструкциях SQL. Он также используется во время выполнения для перехвата ошибок и предупреждений во время выполнения, таких как усечение данных, нарушения правил и синтаксические ошибки в инструкциях SQL, введенных пользователем. Логика программы обычно основана на кодах возврата.
Например, после вызова SQLFetch приложением для получения строк в результирующем наборе возвращает код возврата указывает, был ли достигнут конец результирующий набор (SQL_NO_DATA), если были возвращены информационные сообщения (SQL_SUCCESS_WITH_INFO) или произошла ошибка (SQL_ERROR).
Если драйвер ODBC собственного клиента SQL Server возвращает что-либо, отличное от SQL_SUCCESS, приложение может вызвать SQLGetDiagRec , чтобы получить любые информационные или сообщения об ошибках. Используйте SQLGetDiagRec для прокрутки вверх и вниз по набору сообщений, если существует несколько сообщений.
Код возврата SQL_INVALID_HANDLE всегда указывает на ошибку программирования и никогда не должен встречаться во время выполнения. Все остальные коды возврата предоставляют сведения о времени выполнения, хотя SQL_ERROR могут указывать на ошибку программирования.
Исходный собственный API Microsoft SQL Server, DB-Library для C, позволяет приложению устанавливать функции обработки ошибок обратного вызова и обработки сообщений, возвращающие ошибки или сообщения. Некоторые операторы Transact-SQL, такие как PRINT, RAISERROR, DBCC и SET, возвращают результаты функции обработчика сообщений DB-Library вместо результирующий набор. Однако API ODBC не имеет такой возможности обратного вызова. Когда драйвер ODBC собственного клиента SQL Server обнаруживает сообщения, возвращаемые из SQL Server, он задает код возврата ODBC для SQL_SUCCESS_WITH_INFO или SQL_ERROR и возвращает сообщение в виде одной или нескольких диагностических записей. Поэтому приложение ODBC должно тщательно проверить эти коды возврата и вызвать SQLGetDiagRec для получения данных сообщения.
Сведения об ошибках трассировки см. в разделе "Трассировка доступа к данным". Сведения об улучшениях трассировки ошибок, добавленных в SQL Server 2012, см. в разделе "Доступ к диагностическим сведениям" в журнале расширенных событий.