Поделиться через


Подробные сведения об ошибках SQL Server

Поставщик OLE DB для собственного клиента SQL Server определяет интерфейс ошибок, зависящих от поставщика ISQLServerErrorInfo. Интерфейс возвращает более подробные сведения об ошибке SQL Server и полезен, если выполнение команды или операции работы с наборами строк завершились с ошибкой.

Существует два способа получения доступа к интерфейсу ISQLServerErrorInfo.

Как показано в следующем примере кода, потребитель может вызвать IErrorRecords::GetCustomerErrorObject для получения указателя на ISQLServerErrorInfo. (Нет необходимости получать ISQLErrorInfo.) ISQLErrorInfo и ISQLServerErrorInfo представляют собой пользовательские объекты ошибок OLE DB, при этом объект ISQLServerErrorInfo является интерфейсом для получения информации об ошибках на сервере, включая такие данные, как имя процедуры и номера строк.

// Get the SQL Server custom error object.if(FAILED(hr=pIErrorRecords->GetCustomErrorObject(   nRec, IID_ISQLServerErrorInfo,   (IUnknown**)&pISQLServerErrorErrorInfo)))

Другой способ получить указатель на ISQLServerErrorInfo состоит в вызове метода QueryInterface для уже полученного указателя на ISQLErrorInfo. Обратите на это внимание, так как ISQLServerErrorInfo содержит надмножество информации, доступной из ISQLErrorInfo, имеет смысл пойти прямо в ISQLServerErrorInfo через GetCustomerErrorObject.

Интерфейс ISQLServerErrorInfo предоставляет одну функцию-член ISQLServerErrorInfo::GetErrorInfo. Функция возвращает указатель на структуру SSERRORINFO и указатель на буфер строк. Оба указателя ссылаются на память, которую потребитель должен освободить при помощи метода IMalloc::Free.

Элементы структуры SSERRORINFO обрабатываются потребителем следующим образом.

Член

Описание

pwszMessage

Сообщение об ошибке SQL Server. Идентично строке, возвращаемой в IErrorInfo::GetDescription.

pwszServer

Имя экземпляра SQL Server для сеанса.

pwszProcedure

При необходимости, имя процедуры, в которой произошла ошибка. Пустая строка в противном случае.

lNative

Номер собственной ошибки SQL Server. Идентичен значению, возвращаемому в параметре plNativeErrorISQLErrorInfo::GetSQLInfo.

bState

Состояние сообщения об ошибке SQL Server.

bClass

Серьезность сообщения об ошибке SQL Server.

wLineNumber

Если возможно, номер строки хранимой процедуры, в которой возникла ошибка.

См. также

Справочник

Основные понятия