適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
重要
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 提供者中公開的 ISSAbort 介面會提供 ISSAbort::Abort 方法,用來取消目前的數據列集,以及一開始產生數據列集的命令,以及尚未完成執行的任何命令。
ISSAbort 是 SQL Server Native Client 提供者特定介面,可在 ICommand::Execute 或 IOpenRowset::OpenRowset 所傳回的 IMultipleResults 物件上使用 QueryInterface。
語法
HRESULT Abort(void);
備註
如果中止的命令位於預存程式中,則會終止預存程式的執行(以及呼叫該程式的任何程式),以及包含預存程式呼叫的命令批次。 如果伺服器正在將結果集傳送至用戶端,將會停止此動作。 如果客戶端不想消耗結果集,在釋放列集前呼叫 ISSAbort::Abort 會加快列集釋放速度;但如果有未完成的交易且 XACT_ABORT 為 ON,則當 ISSAbort::Abort 被呼叫時,該交易會被回滾
在 ISSAbort::Abort 傳回S_OK之後,相關聯的 IMultipleResults 介面會進入無法使用的狀態,並將DB_E_CANCELED傳回至所有方法呼叫(除了 IUnknown 介面所定義的方法除外),直到釋放為止。 如果在呼叫 Abort 之前已從 IMultipleResults 取得 IRowset,它也會進入無法使用的狀態,並將DB_E_CANCELED傳回所有方法呼叫(除了 IUnknown 介面和 IRowset::ReleaseRows 所定義的方法除外),直到成功呼叫 ISSAbort::Abort 之後才釋放它。
注意
從 SQL Server 2005(9.x)開始,如果伺服器XACT_ABORT狀態為 ON,執行 ISSAbort::Abort 會終止並回滾任何目前的隱含或明確交易,當連接到 SQL Server 時。 較舊版本的 SQL Server 不會中止目前的交易。
引數
無。
傳回碼值
S_OK
如果批次已取消且DB_E_CANTCANCEL,ISSAbort::Abort 方法會傳回S_OK。 如果批次已經遭到取消,就會傳回 DB_E_CANCELED。
DB_E_CANCELED
批次已經遭到取消。
DB_E_CANTCANCEL
批次未取消。
E_FAIL
發生提供者特有的錯誤,如需詳細資訊,請使用 ISQLServerErrorInfo 介面。
E_UNEXPECTED
此方法的呼叫是非預期的。 例如,對象處於殭屍狀態,因為 已呼叫 ISSAbort::Abort 。
E_OUTOFMEMORY
記憶體不足的錯誤。