SQL Server Native Client 錯誤詳細數據
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
SQL Server Native Client OLE DB 提供者會定義提供者特定的錯誤介面 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 結構成員會依下列方式由取用者解譯。
member | 描述 |
---|---|
pwszMessage | SQL Server 錯誤訊息。 與 IErrorInfo::GetDescription 中傳回的字串相同。 |
pwszServer | 工作階段的 SQL Server 執行個體名稱。 |
pwszProcedure | 如果適用,則為發生錯誤之程序的名稱, 否則便為空字串。 |
lNative | SQL Server 原生錯誤號碼。 與 ISQLErrorInfo::GetSQLInfo 的 plNativeError 參數中所傳回的值相同。 |
bState | SQL Server 錯誤訊息的狀態。 |
bClass | SQL Server 錯誤訊息的嚴重性。 |
wLineNumber | 在適用時,這是發生錯誤之預存程序的行號。 |