SQL Server 错误详细信息

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 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 指针的另一个方式是调用已经获得的 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::GetSQLInfo 的 plNativeError 参数中返回的值相同 。
bState SQL Server 错误消息的状态。
bClass SQL Server 错误消息的严重性。
wLineNumber 如果适用,则为发生错误的存储过程的行号。

另请参阅

错误
RAISERROR (Transact-SQL)