Partage via


IBCPSession ::BCPExec (fournisseur OLE DB Native Client)

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.

Effectue l'opération de copie en bloc.

Syntaxe

  
HRESULT BCPExec(   
      DBROWCOUNT *pRowsCopied);  

Notes

La méthode BCPExec copie des données à partir d’un fichier utilisateur vers une table de base de données ou vice versa, selon la valeur du paramètre eDirection utilisé avec la méthode IBCPSession::BCPInit.

Avant d'appeler BCPExec, appelez la méthode BCPInit avec un nom de fichier utilisateur valide. L'échec de cette opération entraîne une erreur. La seule exception est si une requête doit être utilisée pour une opération de copie en bloc sortante. Dans ce cas, spécifiez NULL pour le nom de table dans la méthode BCPInit , puis spécifiez la requête à l'aide de l'option BCP_OPTION_HINTS.

La méthode BCPExec est la seule méthode de copie en bloc qui est susceptible d'être en attente pendant une durée prolongée. Il s'agit par conséquent de la seule méthode de copie en bloc qui prend en charge le mode asynchrone. Pour utiliser le mode asynchrone, affectez la valeur VARIANT_TRUE à la propriété de session spécifique au fournisseur SSPROP_ASYNCH_BULKCOPY avant d'appeler la méthode BCPExec . Cette propriété est disponible dans le jeu de propriétés DBPROPSET_SQLSERVERSESSION. Pour tester l'achèvement, appelez la méthode BCPExec avec les mêmes paramètres. Si la copie en bloc n'est pas encore terminée, la méthode BCPExec retourne DB_S_ASYNCHRONOUS. Elle retourne également dans l'argument pRowsCopied le nombre de lignes qui ont été envoyées ou reçues à partir du serveur. Les lignes envoyées au serveur sont validées uniquement une fois la fin du lot atteinte.

Arguments

pRowsCopied[out]
Pointeur vers une valeur DWORD. La méthode BCPExec remplit la valeur DWORD avec le nombre de lignes copiées avec succès. Si l'argument pRowsCopied a la valeur NULL, il est ignoré par la méthode BCPExec .

Codet de retour

S_OK
S_OK

E_FAIL
Une erreur spécifique au fournisseur s’est produite. Pour obtenir des informations détaillées, utilisez l’interface ISQLServerErrorInfo.

E_UNEXPECTED
L'appel à la méthode était inattendu. Par exemple, la méthode BCPInit n'a pas été appelée avant cette méthode. Se produit également si l'opération a été abandonnée suite à l'utilisation de l'option BCP_OPTION_ABORT et que la méthode BCPExec a été appelée ensuite.

E_OUTOFMEMORY
Erreur de mémoire insuffisante.

DB_S_ENDOFROWSET
L'opération de copie en bloc s'est terminée et tout le transfert de données a été effectué.

DB_S_ASYNCHRONOUS
Le lot actuel de lignes a été copié. Rappelez la méthode BCPExec pour transférer le lot suivant.

DB_S_ERRORSOCCURRED
Des erreurs se sont produites pendant l'opération de copie en bloc et certaines lignes n'ont pas pu être copiées. Le nombre d'erreurs est inférieur au nombre maximal d'erreurs autorisé.

Voir aussi

IBCPSession (OLE DB)
Exécution d'opérations de copie en bloc