SQLGetDiagField
В драйвере ODBC для собственного клиента SQL Server заданы следующие дополнительные поля для функции SQLGetDiagField. Эти поля поддерживают множество отчетов об ошибках для приложений SQL Server и доступны во всех диагностических записях, созданных дескрипторами соединения ODBC и дескрипторами инструкций ODBC. Эти поля определены в файле sqlncli.h.
Поля диагностических записей |
Описание |
---|---|
SQL_DIAG_SS_LINE |
Сообщает номер строки хранимой процедуры, на которой произошла ошибка. Значение SQL_DIAG_SS_LINE значимо, только если SQL_DIAG_SS_PROCNAME возвращает значение. Значение возвращается как 16-разрядное целое число без знака. |
SQL_DIAG_SS_MSGSTATE |
Состояние сообщения об ошибке. Сведения о состоянии сообщения об ошибке см. в разделе RAISERROR. Значение возвращается как 32-разрядное целое число со знаком. |
SQL_DIAG_SS_PROCNAME |
Имя хранимой процедуры, в которой возникла ошибка, если это имеет смысл. Значение возвращается как символьная строка. Максимальная длина строки (в символах) зависит от версии SQL Server. Ее можно определить путем вызова функции SQLGetInfo, запрашивая значение SQL_MAX_PROCEDURE_NAME_LEN. |
SQL_DIAG_SS_SEVERITY |
Степень серьезности связанного сообщения об ошибке. Значение возвращается как 32-разрядное целое число со знаком. |
SQL_DIAG_SS_SRVNAME |
Имя сервера, на котором произошла ошибка. Значение возвращается как символьная строка. Длина строки (в символах) задается макросом SQL_MAX_SQLSERVERNAME в файле sqlncli.h. |
Специальные диагностические поля SQL Server, содержащие символьные данные, SQL_DIAG_SS_PROCNAME и SQL_DIAG_SS_SRVNAME, возвращают эти данные клиенту как строки в ANSI, строки в Юникоде или строки, оканчивающиеся нулевым байтом. Если необходимо, счетчик символов должен быть изменен с учетом ширины символа. Также можно использовать переносимый тип данных C, такой как TCHAR или SQLTCHAR, чтобы удостовериться, что программная переменная имеет правильную длину.
Драйвер ODBC для собственного клиента SQL Server сообщает следующие дополнительные коды динамических функций, содержащие последнюю попытку выполнения инструкции SQL Server. Код динамической функции возвращается в заголовке (запись 0) диагностического набора записей и доступен при каждом выполнении (успешном или нет).
Код динамической функции |
Источник |
---|---|
SQL_DIAG_DFC_SS_ALTER_DATABASE |
Инструкция ALTER DATABASE |
SQL_DIAG_DFC_SS_CHECKPOINT |
Инструкция CHECKPOINT |
SQL_DIAG_DFC_SS_CONDITION |
Ошибка происходит в предложениях WHERE или HAVING инструкции. |
SQL_DIAG_DFC_SS_CREATE_DATABASE |
Инструкция CREATE DATABASE |
SQL_DIAG_DFC_SS_CREATE_DEFAULT |
Инструкция CREATE DEFAULT |
SQL_DIAG_DFC_SS_CREATE_PROCEDURE |
Инструкция CREATE PROCEDURE |
SQL_DIAG_DFC_SS_CREATE_RULE |
Инструкция CREATE RULE |
SQL_DIAG_DFC_SS_CREATE_TRIGGER |
Инструкция CREATE TRIGGER |
SQL_DIAG_DFC_SS_CURSOR_DECLARE |
Инструкция DECLARE CURSOR |
SQL_DIAG_DFC_SS_CURSOR_OPEN |
Инструкция OPEN |
SQL_DIAG_DFC_SS_CURSOR_FETCH |
Инструкция FETCH |
SQL_DIAG_DFC_SS_CURSOR_CLOSE |
Инструкция CLOSE |
SQL_DIAG_DFC_SS_DEALLOCATE_CURSOR |
Инструкция DEALLOCATE |
SQL_DIAG_DFC_SS_DBCC |
Инструкция DBCC |
SQL_DIAG_DFC_SS_DENY |
Инструкция DENY |
SQL_DIAG_DFC_SS_DROP_DATABASE |
Инструкция DROP DATABASE |
SQL_DIAG_DFC_SS_DROP_DEFAULT |
Инструкция DROP DEFAULT |
SQL_DIAG_DFC_SS_DROP_PROCEDURE |
Инструкция DROP PROCEDURE |
SQL_DIAG_DFC_SS_DROP_RULE |
Инструкция DROP RULE |
SQL_DIAG_DFC_SS_DROP_TRIGGER |
Инструкция DROP TRIGGER |
SQL_DIAG_DFC_SS_DUMP_DATABASE |
Инструкция BACKUP или DUMP DATABASE |
SQL_DIAG_DFC_SS_DUMP_TABLE |
Инструкция DUMP TABLE |
SQL_DIAG_DFC_SS_DUMP_TRANSACTION |
Инструкция BACKUP или DUMP TRANSACTION. Также возвращается для инструкции CHECKPOINT, если параметр trunc. log on chkpt. базы данных включен. |
SQL_DIAG_DFC_SS_GOTO |
Инструкция управления потоком GOTO |
SQL_DIAG_DFC_SS_INSERT_BULK |
Инструкция INSERT BULK |
SQL_DIAG_DFC_SS_KILL |
Инструкция KILL |
SQL_DIAG_DFC_SS_LOAD_DATABASE |
Инструкция LOAD или RESTORE DATABASE |
SQL_DIAG_DFC_SS_LOAD_HEADERONLY |
Инструкция LOAD или RESTORE HEADERONLY |
SQL_DIAG_DFC_SS_LOAD_TABLE |
Инструкция LOAD TABLE |
SQL_DIAG_DFC_SS_LOAD_TRANSACTION |
Инструкция LOAD или RESTORE TRANSACTION |
SQL_DIAG_DFC_SS_PRINT |
Инструкция PRINT |
SQL_DIAG_DFC_SS_RAISERROR |
Инструкция RAISERROR |
SQL_DIAG_DFC_SS_READTEXT |
Инструкция READTEXT |
SQL_DIAG_DFC_SS_RECONFIGURE |
Инструкция RECONFIGURE |
SQL_DIAG_DFC_SS_RETURN |
Инструкция управления потоком RETURN |
SQL_DIAG_DFC_SS_SELECT_INTO |
Инструкция SELECT INTO |
SQL_DIAG_DFC_SS_SET |
Инструкция SET (общая, все параметры) |
SQL_DIAG_DFC_SS_SET_IDENTITY_INSERT |
Инструкция SET IDENTITY_INSERT |
SQL_DIAG_DFC_SS_SET_ROW_COUNT |
Инструкция SET ROWCOUNT |
SQL_DIAG_DFC_SS_SET_STATISTICS |
Инструкция SET STATISTICS IO или SET STATISTICS TIME |
SQL_DIAG_DFC_SS_SET_TEXTSIZE |
Инструкция SET TEXTSIZE |
SQL_DIAG_DFC_SS_SETUSER |
Инструкция SETUSER |
SQL_DIAG_DFC_SS_SET_XCTLVL |
SET TRANSACTION ISOLATION LEVEL, инструкция |
SQL_DIAG_DFC_SS_SHUTDOWN |
Инструкция SHUTDOWN |
SQL_DIAG_DFC_SS_TRANS_BEGIN |
Инструкция BEGIN TRAN |
SQL_DIAG_DFC_SS_TRANS_COMMIT |
Инструкция COMMIT TRAN |
SQL_DIAG_DFC_SS_TRANS_PREPARE |
Подготовка к фиксации распределенной транзакции |
SQL_DIAG_DFC_SS_TRANS_ROLLBACK |
Инструкция ROLLBACK TRAN |
SQL_DIAG_DFC_SS_TRANS_SAVE |
Инструкция SAVE TRAN |
SQL_DIAG_DFC_SS_TRUNCATE_TABLE |
Инструкция TRUNCATE TABLE |
SQL_DIAG_DFC_SS_UPDATE_STATISTICS |
Инструкция UPDATE STATISTICS |
SQL_DIAG_DFC_SS_UPDATETEXT |
Инструкция UPDATETEXT |
SQL_DIAG_DFC_SS_USE |
Инструкция USE |
SQL_DIAG_DFC_SS_WAITFOR |
Инструкция управления потоком WAITFOR |
SQL_DIAG_DFC_SS_WRITETEXT |
Инструкция WRITETEXT |
Функция SQLGetDiagField и возвращающие табличное значение параметры
Функцию SQLGetDiagField можно использовать для получения двух диагностических полей: SQL_DIAG_SS_TABLE_COLUMN_NUMBER и SQL_DIAG_SS_TABLE_ROW_NUMBER. Эти поля помогают определить, какое значение вызвало ошибку или предупреждение, связанные с диагностической записью.
Дополнительные сведения о возвращающих табличное значение параметрах см. в разделе Возвращающие табличное значение параметры (ODBC).
См. также