ISSAsynchStatus::WaitForAsynchCompletion in SQL Server Native Client (OLE DB)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics Platform System (PDW)
Wichtig
Der SQL Server Native Client (häufig abgekürzt mit SNAC) wurde aus SQL Server 2022 (16.x) und SQL Server Management Studio 19 (SSMS) entfernt. Sowohl der OLE DB-Anbieter für den SQL Server Native Client (SQLNCLI oder SQLNCLI11) als auch der Microsoft OLE DB-Legacyanbieter für SQL Server (SQLOLEDB) werden für Neuentwicklungen nicht empfohlen. Verwenden Sie in Zukunft den neuen Microsoft OLE DB-Treiber für SQL Server (MSOLEDBSQL).
Wartet, bis der asynchron ausgeführte Vorgang abgeschlossen ist oder ein Timeout auftritt.
Syntax
HRESULT WaitForAsynchCompletion(
DWORD dwMillisecTimeOut);
Argumente
dwMillisecTimeOut[in]
Timeout in Millisekunden.
Rückgabecodewerte
S_OK
Die Methode wurde erfolgreich ausgeführt.
E_UNEXPECTED
Ein Rowset wird nicht verwendet, da ITransaction::Commit oder ITransaction::Abort aufgerufen oder das Rowset während der ursprünglichen Initialisierungsphase abgebrochen wurde.
DB_E_CANCELED
Die asynchrone Verarbeitung wurde während der Auffüllung des Rowsets oder Initialisierung des Datenquellobjekts abgebrochen.
DB_S_ASYNCHRONOUS
Der Vorgang wurde noch nicht abgeschlossen, obwohl das angegebene Timeout erreicht wurde.
Hinweis
Zusätzlich zu den oben aufgelisteten Rückgabecodewerten unterstützt die ISSAsynchStatus::WaitForAsynchCompletion -Methode auch die Rückgabecodewerte, die von der wichtigsten OLEDB ICommand::Execute - und IDBInitialize::Initialize -Methode zurückgegeben werden.
Bemerkungen
Die ISSAsynchStatus::WaitForAsynchCompletion -Methode gibt keine Werte zurück, bis der Timeoutwert (in Millisekunden) erreicht oder der ausstehende Vorgang abgeschlossen wurde. Das Command -Objekt weist eine CommandTimeout -Eigenschaft auf, die die Anzahl der Sekunden steuert, während denen eine Abfrage ausgeführt wird, bevor ein Timeout auftritt. Die CommandTimeout-Eigenschaft wird ignoriert, wenn sie in Verbindung mit der ISSAsynchStatus::WaitForAsynchCompletion-Methode verwendet wird.
Die Timeouteigenschaft wird für asynchrone Vorgänge ignoriert. Der Timeout-Parameter ISSAsynchStatus::WaitForAsynchCompletion gibt die maximale Zeitspanne an, die verstreicht, bevor die Steuerung an den Aufrufer zurückgegeben wird. Wenn dieses Timeout abläuft, wird DB_S_ASYNCHRONOUS zurückgegeben. Timeouts führen nie zum Abbruch asynchroner Vorgänge. Wenn die Anwendung einen asynchronen Vorgang, der nicht innerhalb des Timeouts abgeschlossen wurde, abbrechen muss, muss sie auf das Timeout warten und, falls DB_S_ASYNCHRONOUS zurückgegeben wird, anschließend den Vorgang explizit abbrechen.
Hinweis
Wenn die OLE DB-Dienstkomponenten verwendet werden, wird möglicherweise S_OK zurückgegeben, wenn eigentlich DB_S_ASYNCHRONOUS erwartet wird. Daher sollten Anwendungen ISSAsynchStatus::GetStatus aufrufen, um den Abschluss zu prüfen, wenn S_OK oder DB_S_ASYNCHRONOUS zurückgegeben wird.
Wenn der dwMillisecTimeOut -Wert auf INFINITE festgelegt wird, blockiert die ISSAsynchStatus::WaitForAsynchCompletion -Methode so lange, bis der Vorgang abgeschlossen ist. Wenn der dwMillisecTimeOut -Wert auf 0 festgelegt ist, gibt die Methode umgehend den Status des ausstehenden Vorgangs zurück. Wenn das Timeout abläuft, bevor der Vorgang abgeschlossen ist, wird DB_S_ASYNCHRONOUS zurückgegeben.
Wenn der Vorgang abgeschlossen ist, bevor das Timeout abläuft, entspricht der zurückgegebene HRESULT-Wert dem vom Vorgang zurückgegebenen HRESULT-Wert (dem HRESULT-Wert, der zurückgegeben worden wäre, wenn der Vorgang synchron ausgeführt worden wäre).
Außerdem wurde dem DBPROPSET_SQLSERVERROWSET-Eigenschaftensatz die SSPROP_ISSAsynchStatus-Eigenschaft hinzugefügt. Anbieter, die die ISSAsynchStatus-Schnittstelle unterstützen, müssen diese Eigenschaft mit dem Wert VARIANT_TRUE implementieren.