ISSAsynchStatus::WaitForAsynchCompletion no SQL Server Native Client (OLE DB)

Aplica-se a: SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)

Importante

O SQL Server Native Client (geralmente abreviado SNAC) foi removido do SQL Server 2022 (16.x) e do SQL Server Management Studio 19 (SSMS). O provedor OLE DB do SQL Server Native Client (SQLNCLI ou SQLNCLI11) e o provedor Microsoft OLE DB herdado para SQL Server (SQLOLEDB) não são recomendados para novos desenvolvimentos. Mude para o novo Microsoft OLE DB Driver (MSOLEDBSQL) para SQL Server daqui em diante.

Espera até que a operação em execução assíncrona esteja concluída ou até que ocorra um time-out.

Syntax

  
HRESULT WaitForAsynchCompletion(   
        DWORD dwMillisecTimeOut);  

Arguments

dwMillisecTimeOut[in]
Pausa em milissegundos.

Valores do código de retorno

S_OK
O método teve sucesso.

E_UNEXPECTED
Um conjunto de linhas está num estado não utilizado porque ITransaction::Commit ou ITransaction::Abort foi chamado ou o conjunto de linhas foi cancelado durante a sua fase de inicialização.

DB_E_CANCELED
O processamento assíncrono foi cancelado durante a inicialização da população de linhas ou do objeto fonte de dados.

DB_S_ASYNCHRONOUS
A operação ainda não foi concluída, apesar de ter sido atingido o tempo de espera especificado.

Note

Para além dos valores de código de retorno listados acima, o método ISSAsynchStatus::WaitForAsynchCompletion também suporta os valores de código de retorno devolvidos pelos métodos principais OLEDB ICommand::Execute e IDBInitialize::Initialize .

Observações

O método ISSAsynchStatus::WaitForAsynchCompletion não retornará até que o valor de time-out (em milissegundos) tenha passado ou a operação pendente esteja concluída. O objeto Command tem uma propriedade CommandTimeout que controla o número de segundos que uma consulta irá correr antes de expirar. A propriedade CommandTimeout será ignorada se usada em conjunto com o método ISSAsynchStatus::WaitForAsynchCompletion .

A propriedade de time-out é ignorada para operações assíncronas. O parâmetro de time-out ISSAsynchStatus::WaitForAsynchCompletion especifica o tempo máximo que decorrerá antes de o controlo ser devolvido ao chamador. Se este tempo expirar, DB_S_ASYNCHRONOUS será devolvido. Os tempos de espera nunca cancelam operações assíncronas. Se a aplicação precisar de cancelar uma operação assíncrona que não seja concluída dentro de um período de time-out, deve esperar pelo time-out e depois cancelar explicitamente a operação se DB_S_ASYNCHRONOUS for devolvido.

Note

Quando os Componentes de Serviço OLE DB são utilizados, S_OK podem ser devolvidos quando DB_S_ASYNCHRONOUS for esperado, pelo que as aplicações devem chamar ISSAsynchStatus::GetStatus para verificar a conclusão quando S_OK ou DB_S_ASYNCHRONOUS for devolvido.

Se o valor dwMillisecTimeOut for definido como INFINITO, o método ISSAsynchStatus::WaitForAsynchCompletion bloqueia-se até a operação estar concluída. Se o valor dwMillisecTimeOut for definido para 0, o método retornará imediatamente com o estado da operação pendente. Se o time-out expirar antes da operação estar concluída DB_S_ASYNCHRONOUS será devolvido.

Se a operação for concluída antes do time-out expirar, o HRESULT devolvido será o HRESULT devolvido pela operação (o HRESULT que teria sido devolvido se a operação tivesse sido realizada de forma síncrona).

Além disso, a propriedade SSPROP_ISSAsynchStatus foi adicionada ao conjunto de propriedades DBPROPSET_SQLSERVERROWSET. Os fornecedores que suportam a interface ISSAsynchStatus devem implementar esta propriedade com um valor de VARIANT_TRUE.