Partager via


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

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Important

SQL Server Native Client (souvent abrégé en SNAC) a été supprimé dans SQL Server 2022 (16.x) et SQL Server Management Studio 19 (SSMS). Le fournisseur OLE DB pour SQL Server Native Client (SQLNCLI ou SQLNCLI11) et le fournisseur Microsoft OLE DB hérité pour SQL Server (SQLOLEDB) ne sont pas recommandés dans les nouveaux développements. Utilisez à la place le nouveau Microsoft OLE DB Driver (MSOLEDBSQL) pour SQL Server.

Attend que l'opération s'exécutant de façon asynchrone se termine ou qu'un délai d'expiration soit dépassé.

Syntaxe

  
HRESULT WaitForAsynchCompletion(   
        DWORD dwMillisecTimeOut);  

Arguments

dwMillisecTimeOut[in]
Délai en millisecondes.

Codet de retour

S_OK
S_OK

E_UNEXPECTED
Un ensemble de lignes est dans un état inutilisé, car ITransaction::Commit ou ITransaction::Abort a été appelé, ou l'ensemble de lignes a été annulé pendant sa phase d'initialisation.

DB_E_CANCELED
Le traitement asynchrone a été annulé pendant le remplissage de l'ensemble de lignes ou l'initialisation de l'objet source de données.

DB_S_ASYNCHRONOUS
L'opération n'est pas encore terminée même si le délai d'expiration spécifié a été atteint.

Notes

Outre les valeurs de code de retour répertoriées ci-dessus, la méthode ISSAsynchStatus::WaitForAsynchCompletion prend également en charge les valeurs de code de retour retournées par les méthodes OLEDB ICommand::Execute et IDBInitialize::Initialize principales.

Notes

La méthode ISSAsynchStatus::WaitForAsynchCompletion n'est pas retournée tant que la valeur du délai d'attente (en millisecondes) n'est pas passée ou que l'opération en attente n'est pas terminée. L'objet Command a une propriété CommandTimeout qui contrôle le nombre de secondes pendant lesquelles une requête doit s'exécuter avant l'expiration du délai imparti. La propriété CommandTimeout est ignorée si elle est utilisée conjointement avec la méthode ISSAsynchStatus::WaitForAsynchCompletion.

La propriété relative au délai d'expiration est ignorée pour les opérations asynchrones. Le paramètre de délai d'expiration de ISSAsynchStatus::WaitForAsynchCompletion spécifie la durée maximale qui doit s'écouler avant que le contrôle ne soit retourné à l'appelant. Si ce délai expire, DB_S_ASYNCHRONOUS est retourné. L'expiration des délais d'attente n'annule jamais les opérations asynchrones. Si l'application doit annuler une opération asynchrone qui ne se termine pas dans un délai imparti, elle doit attendre l'expiration du délai, puis annuler explicitement l'opération si DB_S_ASYNCHRONOUS est retourné.

Notes

Quand les composants du service OLE DB sont utilisés, S_OK peut être retourné quand DB_S_ASYNCHRONOUS est attendu ; ainsi, les applications doivent appeler ISSAsynchStatus::GetStatus pour vérifier l’état d’achèvement quand S_OK ou DB_S_ASYNCHRONOUS est retourné.

Si la valeur de dwMillisecTimeOut est INFINITE, la méthode ISSAsynchStatus::WaitForAsynchCompletion se bloque jusqu'à ce que l'opération soit terminée. Si la valeur de dwMillisecTimeOut est 0, la méthode est retournée immédiatement avec l'état de l'opération en attente. Si le délai d'attente expire avant que l'opération ne soit terminée, DB_S_ASYNCHRONOUS est retourné.

Si l'opération se termine avant l'expiration du délai d'attente, le HRESULT retourné correspond au HRESULT retourné par l'opération (HRESULT retourné si l'opération était effectuée de façon synchrone).

De plus, la propriété SSPROP_ISSAsynchStatus a été ajoutée au jeu de propriétés DBPROPSET_SQLSERVERROWSET. Les fournisseurs qui prennent en charge l’interface ISSAsynchStatus doivent implémenter cette propriété avec la valeur VARIANT_TRUE.

Voir aussi

Exécution d’opérations asynchrones
ISSAsynchStatus (OLE DB)