SQL Server 错误详细信息
适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 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 指针的另一个方式是调用已经获得的 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 | 如果适用,则为发生错误的存储过程的行号。 |