Condividi tramite


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

Si applica a:SQL ServerDatabase SQL diAzure Istanzagestita di SQL di Azure Azure Synapse Analytics PlatformSystem (PDW)

Importante

SQL Server Native Client (spesso abbreviato SNAC) è stato rimosso da SQL Server 2022 (16.x) e SQL Server Management Studio 19 (SSMS). Non è consigliabile usare sia il provider OLE DB SQL Server Native Client (SQLNCLI o SQLNCLI11) che il provider Microsoft OLE DB legacy per SQL Server (SQLOLEDB). Passare al nuovo Microsoft OLE DB Driver (MSOLEDBSQL) per SQL Server in futuro.

Resta in attesa fino al completamento dell'operazione di esecuzione asincrona o fino al verificarsi di un timeout.

Sintassi

  
HRESULT WaitForAsynchCompletion(   
        DWORD dwMillisecTimeOut);  

Argomenti

dwMillisecTimeOut[in]
Timeout in millisecondi.

Valori del codice restituito

S_OK
Il metodo è riuscito.

E_UNEXPECTED
Un set di righe è in uno stato inutilizzato perché ITransaction::Commit o ITransaction::Abort è stato chiamato o il set di righe è stato annullato durante la fase di inizializzazione.

DB_E_CANCELED
L'elaborazione asincrona è stata annullata durante il popolamento del set di righe o l'inizializzazione dell'oggetto origine dati.

DB_S_ASYNCHRONOUS
L'operazione non è stata ancora completata anche se è stato raggiunto il timeout specificato.

Nota

Oltre ai valori di codice restituiti elencati in precedenza, il metodo ISSAsynchStatus::WaitForAsynchCompletion supporta anche i valori di codice restituiti dai metodi OLEDB di base ICommand::Execute e IDBInitialize::Initialize.

Osservazioni:

Il metodo ISSAsynchStatus::WaitForAsynchCompletion non verrà restituito fino al superamento del valore di timeout (in millisecondi) o al completamento dell'operazione in sospeso. L'oggetto Command ha una proprietà CommandTimeout che controlla il numero di secondi di esecuzione di una query prima del timeout . La proprietà CommandTimeout verrà ignorata se utilizzata insieme al metodo ISSAsynchStatus::WaitForAsynchCompletion .

La proprietà di timeout viene ignorata per le operazioni asincrone. Il parametro di timeout di ISSAsynchStatus::WaitForAsynchCompletion specifica la quantità massima di tempo che deve trascorrere prima che il controllo venga restituito al chiamante. Se questo timeout scade, verrà restituito DB_S_ASYNCHRONOUS. I timeout non annullano mai operazioni asincrone. Se l'applicazione deve annullare un'operazione asincrona che non viene completata entro il periodo di timeout, deve attendere lo scadere del timeout e quindi annullare in modo esplicito l'operazione se viene restituito DB_S_ASYNCHRONOUS.

Nota

Quando si usano i componenti del servizio OLE DB, è possibile che venga restituito S_OK quando è previsto DB_S_ASYNCHRONOUS. Quando viene restituito S_OK o DB_S_ASYNCHRONOUS, le applicazioni devono pertanto chiamare ISSAsynchStatus::GetStatus per verificare il completamento.

Se il valore di dwMillisecTimeOut è impostato su INFINITE, il metodo ISSAsynchStatus::WaitForAsynchCompletion mantiene il blocco fino al completamento dell'operazione. Se il valore di dwMillisecTimeOut è impostato su 0, il metodo restituirà immediatamente lo stato dell'operazione in sospeso. Se il timeout scade prima del completamento dell'operazione, viene restituito DB_S_ASYNCHRONOUS.

Se l'operazione viene completata prima dello scadere del timeout, il valore HRESULT restituito sarà quello restituito dall'operazione, ovvero il valore HRESULT che sarebbe stato restituito se l'operazione fosse stata eseguita in modo sincrono.

È stata inoltre aggiunta la proprietà SSPROP_ISSAsynchStatus al set di proprietà DBPROPSET_SQLSERVERROWSET. I provider che supportano l'interfaccia ISSAsynchStatus devono implementare questa proprietà con un valore VARIANT_TRUE.

Vedi anche

Esecuzione di operazioni asincrone
ISSAsynchStatus (OLE DB)