共用方式為


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

在適用時,這是發生錯誤之預存程序的行號。

請參閱

參考

概念