Подробные сведения об ошибках SQL Server
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Драйвер 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 | Если применимо, номер строки хранимой процедуры, в которой возникла ошибка. |