SQL Server Native Client (OLE DB) 中的 ISSAsynchStatus::WaitForAsynchCompletion

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

重要

已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中移除 SQL Server Native Client(通常缩写为 SNAC)。 不建议在新的开发工作中使用 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::CommitITransaction::Abort ,或者行集在其初始化阶段被取消。

DB_E_CANCELED
异步处理在行集填充或数据源对象初始化过程中被取消。

DB_S_ASYNCHRONOUS
此操作尚未完成,即使已达到指定的超时值。

注意

除了上面列出的返回代码值之外,ISSAsynchStatus::WaitForAsynchCompletion 方法还支持由核心 OLEDB ICommand::Execute 和 IDBInitialize::Initialize 方法返回的返回代码值 。

备注

在经过超时值(毫秒)或完成挂起操作之前,ISSAsynchStatus::WaitForAsynchCompletion 方法将不会返回值 。 Command 对象具有 CommandTimeout 属性,该属性控制查询在超时之前将运行的秒数 。如果将 CommandTimeout 属性与 ISSAsynchStatus::WaitForAsynchCompletion 方法结合使用,则将忽略该属性 。

对于异步操作,将忽略超时属性。 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 实现此属性。

另请参阅

执行异步操作
ISSAsynchStatus (OLE DB)