Partager via


IBCPSession ::BCPInit (OLE DB)

Initialise la structure de copie en bloc, effectue une vérification des erreurs, vérifie que les noms de fichiers de données et de format sont corrects, puis les ouvre.

Syntaxe

  
HRESULT BCPInit(   
const wchar_t *pwszTable,  
const wchar_t *pwszDataFile,  
const wchar_t *pwszErrorFile,  
inteDirection);  

Remarques

La méthode BCPInit doit être appelée avant toute autre méthode de copie en bloc. La méthode BCPInit effectue les initialisations nécessaires pour une copie en bloc de données entre la station de travail et SQL Server.

La méthode BCPInit examine la structure de la table source ou cible de la base de données, et non le fichier de données. Il spécifie des valeurs de format de données pour le fichier de données en fonction de chaque colonne de la table de base de données, de la vue ou du jeu de résultats SELECT. Cette spécification inclut le type de données de chaque colonne, la présence ou l’absence d’un indicateur de longueur ou null et des chaînes d’octets de fin dans les données, ainsi que la largeur des types de données de longueur fixe. La méthode BCPInit définit ces valeurs comme suit :

  • Le type de données spécifié est le type de données de la colonne dans la table de base de données, la vue ou le jeu de résultats SELECT. Le type de données est énuméré par les types de données natifs SQL Server spécifiés dans le fichier d’en-tête SQL Server Native Client (sqlncli.h). Leurs valeurs sont dans le modèle de BCP_TYPE_XXX. Les données sont représentées sous sa forme d’ordinateur. Autrement dit, les données d’une colonne de type de données entier sont représentées par une séquence de quatre octets qui est big-or little-endian basée sur l’ordinateur qui a créé le fichier de données.

  • Si un type de données de base de données est de longueur fixe, les données du fichier de données sont également de longueur fixe. Les méthodes de copie en bloc qui traitent les données (par exemple , IBCPSession ::BCPExec) analysent les lignes de données qui attendent que la longueur des données du fichier de données soit identique à la longueur des données spécifiées dans la table de base de données, la vue ou la liste de colonnes SELECT. Par exemple, les données d’une colonne de base de données définie comme char(13) doivent être représentées par 13 caractères pour chaque ligne de données du fichier. Les données de longueur fixe peuvent être préfixées avec un indicateur null si la colonne de base de données autorise les valeurs NULL.

  • Lors de la copie de données vers SQL Server, le fichier de données doit avoir des données pour chaque colonne de la table de base de données. Lors de la copie de données à partir de SQL Server, les données de toutes les colonnes de la table de base de données, de la vue ou du jeu de résultats SELECT sont copiées dans le fichier de données.

  • Lors de la copie de données vers SQL Server, la position ordinale d’une colonne dans le fichier de données doit être identique à la position ordinale de la colonne dans la table de base de données. Lors de la copie de données à partir de SQL Server, la méthode BCPExec place les données en fonction de la position ordinale de la colonne dans la table de base de données.

  • Si un type de données de base de données est variable de longueur (par exemple) varbinary(22)ou si une colonne de base de données peut contenir des valeurs Null, les données du fichier de données sont précédées d’un indicateur de longueur/null. La largeur de l'indicateur varie selon le type de données et la version de la copie en bloc. L’option de méthode IBCPSession ::BCPControl BCP_OPTION_FILEFMT assure la compatibilité entre les fichiers de données de copie en bloc et les serveurs exécutant des versions ultérieures de SQL Server en indiquant quand la largeur des indicateurs dans les données est plus étroite que prévu.

Remarque

Pour modifier les valeurs de format de données spécifiées pour un fichier de données, utilisez les méthodes IBCPSession ::BCPColumns et IBCPSession ::BCPColFmt .

Les copies en bloc vers SQL Server peuvent être optimisées pour les tables qui ne contiennent pas d’index en définissant l’option de base de données sélectionnée dans/bulkcopy.

Les arguments

pwszTable[in]
Nom de la table de base de données à copier dans ou hors de. Le nom peut inclure le nom de la base de données ou le nom du propriétaire. Par exemple, « pubs.username.titles », « pubs.. titles », « username.titles ».

Si l’argument eDirection est défini sur BCP_DIRECTION_OUT, l’argument pwszTable peut être le nom d’une vue de base de données.

Si l’argument eDirection est défini sur BCP_DIRECTION_OUT et qu’une instruction SELECT est spécifiée à l’aide de la méthode BCPControl avant l’appel de la méthode BCPExec , l’argument pwszTable doit avoir la valeur NULL.

pwszDataFile[in]
Nom du fichier utilisateur à copier dans ou hors du fichier utilisateur.

pwszErrorFile[in]
Nom du fichier d’erreur à remplir avec les messages d’avancement, les messages d’erreur et les copies de toutes les lignes qui n’ont pas pu être copiées d’un fichier utilisateur vers une table. Si l’argument pwszErrorFile a la valeur NULL, aucun fichier d’erreur n’est utilisé.

eDirection[in]
Direction de l’opération de copie, BCP_DIRECTION_IN ou BCP_DIRECTION _OUT. BCP_DIRECTION _IN indique une copie d’un fichier utilisateur dans une table de base de données ; BCP_DIRECTION _OUT indique une copie d’une table de base de données vers un fichier utilisateur.

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_OUTOFMEMORY
Erreur de mémoire insuffisante.

E_INVALIDARG
Un ou plusieurs arguments n’ont pas été spécifiés correctement. Par exemple, un nom de fichier non valide a été donné.

Voir aussi

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