Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйвер 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