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

Применимо к: SQL Server Azure SQL DatabaseУправляемый экземпляр SQL AzureAzure Synapse Analytics AnalyticsPlatform 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)