SQL Server Native Client 中的 ISSAsynchStatus::WaitForAsynchCompletion (OLE DB)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics 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 以繼續使用。
等到非同步執行的作業完成或發生逾時為止。
語法
HRESULT WaitForAsynchCompletion(
DWORD dwMillisecTimeOut);
引數
dwMillisecTimeOut[in]
逾時 (以毫秒為單位)。
傳回碼值
S_OK
此方法已成功。
E_UNEXPECTED
數據列集處於未使用狀態,因為 已呼叫 ITransaction::Commit 或 ITransaction::Abort ,或在初始化階段取消數據列集。
DB_E_CANCELED
數據列集母體擴展或數據源物件初始化期間,異步處理已取消。
DB_S_ASYNCHRONOUS
即使已經達到指定的逾時,此作業還是尚未完成。
注意
除了以上列出的傳回碼值,ISSAsynchStatus::WaitForAsynchCompletion 方法也支援透過核心 OLEDB ICommand::Execute 和 IDBInitialize::Initialize 方法所傳回的傳回碼值。
備註
在逾時值 (以毫秒為單位) 已過,或暫止的作業完成前,ISSAsynchStatus::WaitForAsynchCompletion 方法將不會傳回。 Command 物件的 CommandTimeout 屬性會控制查詢在逾時前執行的秒數。如果搭配 ISSAsynchStatus::WaitForAsynchCompletion 方法使用,將會忽略 CommandTimeout 屬性。
非同步作業會忽略逾時屬性。 ISSAsynchStatus::WaitForAsynchCompletion 的逾時參數會指定將控制項傳回給呼叫端前經過的時間上限。 如果這個逾時過期,會傳回 DB_S_ASYNCHRONOUS。 逾時絕不會取消非同步作業。 如果應用程式需要取消沒有在逾時期間內完成的非同步作業,它必須等到逾時,然後明確地取消此作業 (如果有傳回 DB_S_ASYNCHRONOUS)。
注意
使用 OLE DB 服務元件時,如果為 DB_S_ASYNCHRONOUS,可能會傳回 S_OK;因此,應用程式應該呼叫 ISSAsynchStatus::GetStatus 來檢查傳回 S_OK 或 DB_S_ASYNCHRONOUS 時,作業是否完成。
如果 dwMillisecTimeOut 值設定為 INFINITE,ISSAsynchStatus::WaitForAsynchCompletion 方法會封鎖,直到作業完成為止。 如果 dwMillisecTimeOut 值設定為 0,則方法將會立即傳回暫止之作業的狀態。 如果逾時在作業完成之前到期,則會傳回DB_S_ASYNCHRONOUS。
如果作業在逾時過期前完成,傳回的 HRESULT 將會是此作業所傳回的 HRESULT (已經傳回的 HRESULT 已經讓此作業以同步方式執行)。
此外,SSPROP_ISSAsynchStatus 屬性已加入到 DBPROPSET_SQLSERVERROWSET 屬性集。 支援 ISSAsynchStatus 介面的提供者必須使用 VARIANT_TRUE 的值實作此屬性。