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, возвращают эти данные клиенту в виде завершающихся значений NULL, 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 в chkpt. Параметр базы данных включен.
SQL_DIAG_DFC_SS_GOTO Оператор GOTO control-of-flow
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 control-of-flow
SQL_DIAG_DFC_SS_WRITETEXT Инструкция WRITETEXT

Параметры SQLGetDiagField и Table-Valued

SQLGetDiagField можно использовать для получения двух диагностических полей: SQL_DIAG_SS_TABLE_COLUMN_NUMBER и SQL_DIAG_SS_TABLE_ROW_NUMBER. Эти поля помогают определить, какое значение вызвало ошибку или предупреждение, связанное с диагностической записью.

Дополнительные сведения о табличном значении параметров см. в разделе "Параметры с табличным значением" (ODBC).

См. также

Функция SQLGetDiagField
Подробные сведения о реализации API-интерфейсов ODBC