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

Dotyczy:sql ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Ważna

SQL Server Native Client (często skracany jako SNAC) został usunięty z SQL Server 2022 (16.x) i SQL Server Management Studio 19 (SSMS). Zarówno dostawca OLE DB klienta natywnego programu SQL Server (SQLNCLI lub SQLNCLI11), jak i starszy dostawca MICROSOFT OLE DB dla programu SQL Server (SQLOLEDB) nie są zalecane w przypadku nowego programowania. Przełącz się na nowy sterownik Microsoft OLE DB (MSOLEDBSQL) dla programu SQL Server na przyszłość.

Czeka, aż operacja wykonująca się asynchronicznie się zakończy lub nastąpi timeout.

Syntax

  
HRESULT WaitForAsynchCompletion(   
        DWORD dwMillisecTimeOut);  

Arguments

dwMillisecTimeOut[in]
Czas na przerwę w milisekundach.

Wartości kodów zwracanych

S_OK
Metoda się powiodła.

E_UNEXPECTED
Wiersz jest w stanie nieużywanym, ponieważ wywołano ITransaction::Commit lub ITransaction::Abort lub rowset został anulowany podczas fazy inicjalizacji.

DB_E_CANCELED
Przetwarzanie asynchroniczne było anulowane podczas zapełniania wierszy lub inicjalizacji obiektów źródła danych.

DB_S_ASYNCHRONOUS
Operacja nie została jeszcze zakończona, mimo że wyznaczony czas został osiągnięty.

Uwaga / Notatka

Oprócz wymienionych powyżej wartości kodów zwrotnych, metoda ISSAsynchStatus::WaitForAsynchCompletion obsługuje również wartości kodów zwrotu zwracane przez podstawowe metody OLEDB ICommand::Execute i IDBInitialize::Initialize .

Remarks

Metoda ISSAsynchStatus::WaitForAsynchCompletion nie zwróci się, dopóki nie minie wartość limitu czasu (w milisekundach) lub operacja oczekująca nie zostanie wykonana. Obiekt Command posiada właściwość CommandTimeout , która kontroluje liczbę sekund wykonania zapytania przed wygaśnięciem czasu. Właściwość CommandTimeout zostanie zignorowana, jeśli zostanie użyta w połączeniu z metodą ISSAsynchStatus::WaitForAsynchCompletion (ISSAsynchStatus::WaitForAsynchComplete ).

Właściwość time-out jest pomijana w operacjach asynchronicznych. Parametr czasowego limitu ISSAsynchStatus::WaitForAsynchCompletion określa maksymalny czas, jaki upływie, zanim kontrola zostanie zwrócona wywołującemu. Jeśli ten czas wygaśnie, DB_S_ASYNCHRONOUS zostanie zwrócony. Time-outy nigdy nie anulują operacji asynchronicznych. Jeśli aplikacja musi anulować operację asynchroniczną, która nie zakończy się w określonym czasie przerwy, musi czekać na ten czas, a następnie wyraźnie anulować operację, jeśli DB_S_ASYNCHRONOUS zostanie zwrócona.

Uwaga / Notatka

Gdy komponenty usług OLE DB są używane, S_OK mogą być zwracane, gdy DB_S_ASYNCHRONOUS jest oczekiwane, dlatego aplikacje powinny wywołać ISSAsynchStatus::GetStatus , aby sprawdzić zakończenie przy zwróceniu S_OK lub DB_S_ASYNCHRONOUS.

Jeśli wartość dwMillisecTimeOut jest ustawiona na INFINITE, metoda ISSAsynchStatus::WaitForAsynchCompletion blokuje się do czasu zakończenia operacji. Jeśli wartość dwMillisecTimeOut jest ustawiona na 0, metoda natychmiast zwróci status oczekującej operacji. Jeśli timeout wygaśnie przed zakończeniem operacji DB_S_ASYNCHRONOUS zostanie zwrócony.

Jeśli operacja zakończy się przed upływem limitu czasu, zwrócony HRESULT będzie HRESULT zwrócony przez operację (HRESULT, który zostałby zwrócony, gdyby operacja została wykonana synchronicznie).

Dodatkowo do zbioru DBPROPSET_SQLSERVERROWSET własności dodano własność SSPROP_ISSAsynchStatus. Dostawcy wspierający interfejs ISSAsynchStatus muszą implementować tę właściwość o wartości VARIANT_TRUE.