SQL Server Native Client 錯誤詳細資料

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

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 結構成員會依下列方式由取用者解譯。

member 描述
pwszMessage SQL Server 錯誤訊息。 與 IErrorInfo::GetDescription 中傳回的字串相同。
pwszServer 工作階段的 SQL Server 執行個體名稱。
pwszProcedure 如果適用,則為發生錯誤之程序的名稱, 否則便為空字串。
lNative SQL Server 原生錯誤號碼。 與 ISQLErrorInfo::GetSQLInfoplNativeError 參數中所傳回的值相同。
bState SQL Server 錯誤訊息的狀態。
bClass SQL Server 錯誤訊息的嚴重性。
wLineNumber 在適用時,這是發生錯誤之預存程序的行號。

另請參閱

錯誤
RAISERROR (Transact-SQL)