Skip to content

Latest commit

 

History

History
55 lines (44 loc) · 3.7 KB

sql-server-error-detail.md

File metadata and controls

55 lines (44 loc) · 3.7 KB
title description author ms.author ms.date ms.service ms.subservice ms.topic helpviewer_keywords
SQL Server error detail (OLE DB driver)
Learn about the provider-specific error interface ISQLServerErrorInfo in OLE DB Driver for SQL Server, which returns details about a SQL Server error.
David-Engel
davidengel
06/14/2018
sql
connectivity
reference
OLE DB Driver for SQL Server, errors
errors [OLE DB], error details
IErrorRecords interface
IErrorInfo interface
OLE DB error handling, error details
ISQLServerErrorInfo interface

SQL Server Error Detail

[!INCLUDE SQL Server]

[!INCLUDEDriver_OLEDB_Download]

The OLE DB Driver for SQL Server defines the provider-specific error interface ISQLServerErrorInfo. The interface returns more detail about a [!INCLUDEssNoVersion] error and is valuable when command execution or rowset operations fail.

There are two ways to obtain access to ISQLServerErrorInfo interface.

The consumer may call IErrorRecords::GetCustomerErrorObject to obtain an ISQLServerErrorInfo pointer, as shown in the following code sample. (There is no need to obtain ISQLErrorInfo.) Both ISQLErrorInfo and ISQLServerErrorInfo are custom OLE DB error objects, with ISQLServerErrorInfo being the interface to use to obtain information of server errors, including such details as procedure name and line numbers.

// Get the SQL Server custom error object.  
if(FAILED(hr=pIErrorRecords->GetCustomErrorObject(  
   nRec, IID_ISQLServerErrorInfo,  
   (IUnknown**)&pISQLServerErrorErrorInfo)))  

Another way to get an ISQLServerErrorInfo pointer is to call the QueryInterface method on an already-obtained ISQLErrorInfo pointer. Note that because ISQLServerErrorInfo contains a superset of the information available from ISQLErrorInfo, it makes sense to go directly to ISQLServerErrorInfo through GetCustomerErrorObject.

The ISQLServerErrorInfo interface exposes one member function, ISQLServerErrorInfo::GetErrorInfo. The function returns a pointer to an SSERRORINFO structure and a pointer to a string buffer. Both pointers reference memory the consumer must deallocate by using the IMalloc::Free method.

SSERRORINFO structure members are interpreted by the consumer as follows.

Member Description
pwszMessage [!INCLUDEssNoVersion] error message. Identical to the string returned in IErrorInfo::GetDescription.
pwszServer Name of the instance of [!INCLUDEssNoVersion] for the session.
pwszProcedure If appropriate, the name of the procedure in which the error originated. An empty string otherwise.
lNative [!INCLUDEssNoVersion] native error number. Identical to the value returned in the plNativeError parameter of ISQLErrorInfo::GetSQLInfo.
bState State of a [!INCLUDEssNoVersion] error message.
bClass Severity of a [!INCLUDEssNoVersion] error message.
wLineNumber When applicable, the line number of a stored procedure on which the error occurred.

See Also

Errors
RAISERROR (Transact-SQL)