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


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

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Скачать драйвер OLE DB

Драйвер OLE DB Driver for 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 обрабатываются потребителем следующим образом.

Элемент Description
pwszMessage Сообщение об ошибке SQL Server. Идентично строке, возвращаемой методом IErrorInfo::GetDescription.
pwszServer Имя экземпляра SQL Server для сеанса.
pwszProcedure При необходимости, имя процедуры, в которой произошла ошибка. Пустая строка в противном случае.
lNative Номер собственной ошибки SQL Server. Идентичен значению, возвращаемому в параметре plNativeError метода ISQLErrorInfo::GetSQLInfo.
bState Состояние сообщения об ошибке SQL Server.
bClass Серьезность сообщения об ошибке SQL Server.
wLineNumber Если применимо, номер строки хранимой процедуры, в которой возникла ошибка.

См. также

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