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

См. также

Ошибки
RAISERROR (Transact-SQL)