共用方式為


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 適用時,發生錯誤的預存程式的行號。

另請參閱

錯誤
RAISERROR (Transact-SQL)