SQL Server 错误详细信息

SQL Server Native Client OLE DB 访问接口定义了特定于访问接口的错误接口 ISQLServerErrorInfo。该接口返回有关 SQL Server 错误的更多详细信息,在命令执行或行集操作失败时这些信息很有用。

可以用两种方式访问 ISQLServerErrorInfo 接口。

使用者可调用 IErrorRecords::GetCustomerErrorObject 以获得 ISQLServerErrorInfo 指针,如以下代码示例所示。(不需要获得 ISQLErrorInfo。)ISQLErrorInfoISQLServerErrorInfo 都是自定义的 OLE DB 错误对象,并以 ISQLServerErrorInfo 作为用于获得服务器错误信息(包括诸如过程名称和行号这样的详细信息)的接口。

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

获得 ISQLServerErrorInfo 指针的另一个方式是调用已经获得的 ISQLErrorInfo 指针的 QueryInterface 方法。注意,由于 ISQLServerErrorInfo 包含从 ISQLErrorInfo 获得的信息的超集,因此通过 GetCustomerErrorObject 直接转到 ISQLServerErrorInfo 是有意义的。

ISQLServerErrorInfo 接口公开了一个成员函数 ISQLServerErrorInfo::GetErrorInfo。该函数返回 SSERRORINFO 结构的指针和字符串缓冲区的指针。两个指针都引用使用者必须使用 IMalloc::Free 方法释放的内存。

SSERRORINFO 结构成员由使用者解释如下。

成员

说明

pwszMessage

SQL Server 错误消息。与在 IErrorInfo::GetDescription 中返回的字符串相同。

pwszServer

会话的 SQL Server 实例的名称。

pwszProcedure

如果适用,则为产生错误的过程的名称。否则为空字符串。

lNative

SQL Server 本机错误号。与在 ISQLErrorInfo::GetSQLInfoplNativeError 参数中返回的值相同。

bState

SQL Server 错误消息的状态。

bClass

SQL Server 错误消息的严重性。

wLineNumber

如果适用,则为发生错误的存储过程的行号。

请参阅

参考

概念