Подробные сведения об ошибках 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 |
Если возможно, номер строки хранимой процедуры, в которой возникла ошибка. |