Partager via


IBCPSession ::BCPControl (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.

Définit les options d'une opération de copie en bloc.

Syntaxe


HRESULT BCPControl(   
      int eOption,  
      void *iValue);  

Notes

La méthode BCPControl définit différents paramètres de contrôle pour les opérations de copie en bloc, y compris le nombre d'erreurs autorisées avant l'annulation de la copie en bloc, les numéros des première et dernière lignes à copier à partir d'un fichier de données, et la taille du lot.

Cette méthode est également utilisée pour spécifier l'instruction SELECT à utiliser lors de la copie en bloc de données à partir de SQL Server. Vous pouvez affecter à l'argument eOption la valeur BCP_OPTION_HINTS et à l'argument iValue un pointeur vers une chaîne de caractères larges contenant l'instruction SELECT.

Les valeurs possibles pour eOption sont :

Option Description
BCP_OPTION_ABORT Arrête une opération de copie en bloc déjà en cours. Vous pouvez appeler la méthode BCPControl avec un argument eOption de valeur BCP_OPTION_ABORT à partir d'un autre thread pour arrêter une opération de copie en bloc en cours d'exécution. L'argument iValue est ignoré.
BCP_OPTION_BATCH Nombre de lignes traitées par lot. La valeur par défaut est 0, ce qui indique toutes les lignes d'une table lorsque les données sont extraites, ou toutes les lignes dans le fichier de données utilisateur lorsque les données sont copiées vers SQL Server. Une valeur inférieure à 1 rétablit la valeur par défaut de BCP_OPTION_BATCH.
BCP_OPTION_DELAYREADFMT Une valeur booléenne définie sur true entraîne la lecture d’IBCPSession::BCPReadFmt au moment de l’exécution. Si la valeur False est définie (valeur par défaut), IBCPSession::BCPReadFmt lira immédiatement le fichier de format. Une erreur de séquence se produit si BCP_OPTION_DELAYREADFMT a la valeur true et que vous appelez IBCPSession::BCPColumns ou IBCPSession::BCPColFmt.

Une erreur de séquence se produira également si vous appelez IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)FALSE)) après avoir appelé IBCPSession::BCPControl(BCPDELAYREADFMT, (void *)TRUE) et IBCPSession::BCPWriteFmt.

Pour plus d’informations, consultez Découverte des métadonnées.
BCP_OPTION_FILECP L'argument iValue contient le numéro de la page de codes pour le fichier de données. Vous pouvez spécifier le numéro de la page de codes, tel que 1252 ou 850, ou l'une des valeurs suivantes :

BCP_FILECP_ACP : les données du fichier se trouve dans la page de codes Microsoft Windows du client.

BCP_FILECP_OEMCP : les données dans le fichier figurent dans la page de codes OEM du client (valeur par défaut).

BCP_FILECP_RAW : les données dans le fichier figurent dans la page de codes de SQL Server.
BCP_OPTION_FILEFMT Numéro de version du format de fichier de données. Il peut s’agir de 80 (SQL Server 2000 (8.x)), 90 (SQL Server 2005 (9.x)), 100 (SQL Server 2008 (10.0.x) ou SQL Server 2008 R2 (10.50.x)), 110 (SQL Server 2012 (11.x)) ou 120 (SQL Server 2014 (12.x). 120 est la valeur par défaut. Cela s'avère utile pour exporter et importer des données dans des formats pris en charge par une version antérieure du serveur. Par exemple, pour importer des données obtenues à partir d’une colonne de texte sur un serveur SQL Server 2000 (8.x) dans une colonne varchar(max) sur un serveur SQL Server 2005 (9.x) ou version ultérieure, vous devez spécifier 80. De la même façon, si vous spécifiez 80 quand vous exportez des données à partir d’une colonne varchar(max) , celles-ci sont enregistrées de la même façon que les colonnes de texte (au format SQL Server 2000 (8.x)) et peuvent être importées dans une colonne de texte d’un serveur SQL Server 2000 (8.x).
BCP_OPTION_FIRST Première ligne de données du fichier ou de la table à copier. La valeur par défaut est 1 ; une valeur inférieure à 1 rétablit la valeur par défaut de cette option.
BCP_OPTION_FIRSTEX Pour les opérations bcp out, spécifie la première ligne de la table de base de données à copier dans le fichier de données.

Pour les opérations bcp in, spécifie la première ligne du fichier de données à copier dans la table de base de données.

Le paramètre iValue est supposé être l'adresse d'un entier 64 bits signé contenant la valeur. La valeur maximale qui peut être passée à BCPFIRSTEX est 2^63-1.
BCP_OPTION_FMTXML Permet de spécifier que le fichier de format généré doit être au format XML. Par défaut, cette option est désactivée et les fichiers de format sont enregistrés en tant que fichiers texte. Le fichier de format XML fournit une plus grande souplesse, mais aussi quelques contraintes supplémentaires. Par exemple, vous ne pouvez pas spécifier simultanément le préfixe et la terminaison d'un champ, ce qui est possible dans les fichiers de format plus anciens.

Remarque : les fichiers de format XML ne sont pris en charge que lorsque les outils SQL Server sont installés avec SQL Server Native Client.
BCP_OPTION_HINTS L'argument iValue contient un pointeur de chaîne de caractères larges. La chaîne adressée spécifie des indicateurs de traitement de copie en bloc SQL Server ou une instruction Transact-SQL qui retourne un jeu de résultats. Si une instruction Transact-SQL est spécifiée qui retourne plusieurs jeux de résultats, tous les jeux de résultats après le premier sont ignorés.
BCP_OPTION_KEEPIDENTITY Quand l’argument iValue a la valeur true, cette option spécifie que les méthodes de copie en bloc insèrent des valeurs de données fournies pour les colonnes SQL Server définies avec une contrainte d’identité. Le fichier d'entrée doit fournir des valeurs pour les colonnes d'identité. Si cela n'est pas défini, de nouvelles valeurs d'identités sont générées pour les lignes insérées. Toutes les données présentes dans le fichier pour les colonnes d'identité sont ignorées.
BCP_OPTION_KEEPNULLS Spécifie si les valeurs de données vides dans le fichier sont converties en valeurs NULL dans la table SQL Server . Quand l’argument iValue a la valeur TRUE, les valeurs vides sont converties en valeurs NULL dans la table SQL Server. L'option par défaut consiste à convertir les valeurs vides en une valeur par défaut pour la colonne dans la table SQL Server si une valeur par défaut existe.
BCP_OPTION_LAST Dernière ligne à copier. La valeur par défaut indique de copier toutes les lignes. Une valeur inférieure à 1 rétablit la valeur par défaut de cette option.
BCP_OPTION_LASTEX Pour les opérations bcp out, spécifie la dernière ligne de la table de base de données à copier dans le fichier de données.

Pour les opérations bcp in, spécifie la dernière ligne du fichier de données à copier dans la table de base de données.

Le paramètre iValue est supposé être l'adresse d'un entier 64 bits signé contenant la valeur. La valeur maximale qui peut être passée à BCPLASTEX est 2^63-1.
BCP_OPTION_MAXERRS Nombre d'erreurs autorisées avant l'échec de l'opération de copie en bloc. La valeur par défaut est de 10. Une valeur inférieure à 1 rétablit la valeur par défaut de cette option. La copie en bloc impose 65 535 erreurs au maximum. Toute tentative d'attribution d'une valeur supérieure à 65 535 à cette option entraîne l'attribution de la valeur 65 535 à l'option.
BCP_OPTION_ROWCOUNT Retourne le nombre de lignes affectées par l'opération BCP en cours (ou la dernière).
BCP_OPTION_TEXTFILE Le fichier de données n'est pas un fichier binaire, mais un fichier texte. BCP détecte si le fichier texte est un fichier Unicode ou non en vérifiant le marqueur d'octet Unicode dans les 2 premiers octets du fichier de données.
BCP_OPTION_UNICODEFILE Lorsque cette option a pour valeur TRUE, elle spécifie que le fichier d'entrée est un format de fichier Unicode.

Arguments

eOption[in]
Spécifiez l'une des options répertoriées dans la section Notes ci-dessus.

iValue[in]
Valeur pour le paramètre eOptionspécifié. L'argument iValue est un cast de valeur entière à un pointeur void permettant d'autoriser l'expansion future vers des valeurs 64 bits.

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 IBCPSession::BCPInit n’a pas été appelée avant l’appel de cette fonction.

E_OUTOFMEMORY
Erreur de mémoire insuffisante.

Voir aussi

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