Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Effectue l’opération de copie en bloc.
Syntaxe
HRESULT BCPExec(
DBROWCOUNT *pRowsCopied);
Remarques
La méthode BCPExec copie les données d’un fichier utilisateur dans une table de base de données ou inversement, 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. Dans ce cas, spécifiez NULL pour le nom de la 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 susceptible d’être en attente pendant une durée quelconque. Il s’agit donc de la seule méthode de copie en bloc qui prend en charge le mode asynchrone. Pour utiliser le mode asynchrone, définissez la propriété de session spécifique du fournisseur SSPROP_ASYNCH_BULKCOPY sur VARIANT_TRUE 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 un nombre d’états du nombre de lignes envoyées ou reçues du serveur. Les lignes envoyées au serveur ne sont pas validées tant que la fin d’un lot n’a pas été atteinte.
Les arguments
pRowsCopied[out]
Pointeur vers un DWORD. La méthode BCPExec remplit le DWORD avec le nombre de lignes correctement copiées. Si l’argument pRowsCopied a la valeur NULL, il est ignoré par la méthode BCPExec .
Codet de retour
S_OK
La méthode a réussi.
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 d’appeler cette méthode. Se produit également si l’opération a été abandonnée à l’aide de l’option BCP_OPTION_ABORT et que la méthode BCPExec a été appelée par la suite.
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é. Appelez à nouveau 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 peut-être pas été copiées. Le nombre d’erreurs est toujours inférieur aux erreurs maximales autorisées.
Voir aussi
IBCPSession (OLE DB)
Exécution d’opérations de copie en bloc