Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо:SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
azure Synapse Analytics Analytics
Platform System (PDW)
Драйвер ODBC собственного клиента SQL Server указывает следующие дополнительные поля диагностика для SQLGetDiagField. Эти поля поддерживают расширенные отчеты об ошибках для приложений SQL Server и доступны во всех диагностика записях, созданных на подключенных дескрипторах подключений ODBC и дескрипторах инструкций ODBC. Эти поля определены в файле sqlncli.h.
| Поля диагностических записей | Description |
|---|---|
| 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 |
| SQL_DIAG_DFC_SS_INSERT_BULK | INSERT Оператор BULK |
| SQL_DIAG_DFC_SS_KILL | Инструкция KILL |
| SQL_DIAG_DFC_SS_LOAD_DATABASE | LOAD или RESTOREDATABASE оператор |
| 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 SET STATISTICS IO или SETSET 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 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).