Share via


ISQLServerErrorInfo::GetErrorInfo (Native Client OLE DB Provider)

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

重要

SQL Server Native Client (通常縮寫為 SNAC) 已從 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中移除。 不建議使用 SQL Server Native Client OLE DB 提供者 (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 進行新的開發。 請切換至新的 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 以繼續使用。

傳回 SQL Server Native Client OLE DB 提供者 SSERRORINFO 結構的指標,其中包含 SQL Server 錯誤詳細資料。

SQL Server Native Client OLE DB 提供者會 定義 ISQLServerErrorInfo 錯誤介面。 此介面會傳回來自 SQL Server 錯誤的詳細資料,包括其嚴重性和狀態。

語法

  
HRESULT GetErrorInfo(  
   SSERRORINFO**ppSSErrorInfo,  
   OLECHAR**ppErrorStrings);  

引數

ppSSErrorInfo[out]
SSERRORINFO 結構的指標。 如果方法失敗,或者沒有與錯誤建立關聯的 SQL Server 資訊,提供者就不會配置任何記憶體,並且確保 ppSSErrorInfo 引數在輸出時為 Null 指標。

ppErrorStrings[out]
Unicode 字元字串指標的指標。 如果方法失敗,或者沒有與錯誤建立關聯的 SQL Server 資訊,提供者就不會配置任何記憶體,並且確保 ppErrorStrings 引數在輸出時為 Null 指標。 使用 IMalloc::Free 方法釋放 ppErrorStrings 引數時,會釋放傳回之 SSERRORINFO 結構的三個個別字串成員,因為有在區塊中配置記憶體。

傳回碼值

S_OK
此方法已成功。

E_INVALIDARG
ppSSErrorInfoppErrorStrings 引數為 NULL。

E_OUTOFMEMORY
SQL Server Native Client OLE DB 提供者無法配置足夠的記憶體來完成要求。

備註

SQL Server Native Client OLE DB 提供者會為透過取用者傳遞的指標傳回的 SSERRORINFO 和 OLECHAR 字串配置記憶體。 當取用者不再需要存取錯誤資料時,必須使用 IMalloc::Free 方法來取消配置這個記憶體。

SSERRORINFO 結構定義如下:

typedef struct tagSSErrorInfo  
   {  
   LPOLESTR pwszMessage;  
   LPOLESTR pwszServer;  
   LPOLESTR pwszProcedure;  
   LONG lNative;  
   BYTE bState;  
   BYTE bClass;  
   WORD wLineNumber;  
   }  
SSERRORINFO;  
member 描述
pwszMessage 來自 SQL Server 的錯誤訊息。 此訊息會透過 IErrorInfo::GetDescription 方法傳回。
pwszServer 發生錯誤之 SQL Server 執行個體的名稱。
pwszProcedure 如果在預存程序中發生錯誤,則是產生錯誤之預存程序的名稱,否則為空字串。
lNative SQL Server 錯誤號碼。 此錯誤號碼與 ISQLErrorInfo::GetSQLInfo 方法之 plNativeError 參數中所傳回的錯誤號碼相同。
bState SQL Server 錯誤的狀態。
bClass SQL Server 錯誤的嚴重性。
wLineNumber 在適用時,這是產生錯誤訊息之 SQL Server 預存程序的行號。 如果不包含任何程序,預設值為 1。

結構中的指標會參考 ppErrorStrings 引數所傳回之字串中的地址。

另請參閱

RAISERROR (Transact-SQL)