Подробные сведения об ошибках SQL Server
Поставщик OLE DB SQL Server Native Client определяет интерфейс ошибки 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 обрабатываются потребителем следующим образом.
Участник | Description |
---|---|
pwszMessage | Сообщение об ошибке SQL Server. Идентично строке, возвращаемой методом IErrorInfo::GetDescription. |
pwszServer | Имя экземпляра SQL Server для сеанса. |
pwszProcedure | При необходимости, имя процедуры, в которой произошла ошибка. Пустая строка в противном случае. |
lNative | Номер собственной ошибки SQL Server. Идентичен значению, возвращаемому в параметре plNativeError метода ISQLErrorInfo::GetSQLInfo. |
bState | Состояние сообщения об ошибке SQL Server. |
bClass | Серьезность сообщения об ошибке SQL Server. |
wLineNumber | Если применимо, номер строки хранимой процедуры, в которой возникла ошибка. |