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.
Modifie les paramètres par défaut pour différents paramètres de contrôle pour une copie en bloc entre un fichier et SQL Server.
Syntaxe
RETCODE bcp_control (
HDBC
hdbc
,
INT
eOption
,
void*
iValue
);
Les arguments
hdbc
Handle de connexion ODBC compatible avec la copie en bloc.
eOption
Est l’un des éléments suivants :
BCPABORT
Arrête une opération de copie en bloc déjà en cours. Appelez bcp_control avec une option eOption de BCPABORT à partir d’un autre thread pour arrêter une opération de copie en bloc en cours d’exécution. Le paramètre iValue est ignoré.
BCPBATCH
Nombre de lignes par lot. La valeur par défaut est 0, qui indique toutes les lignes d’une table, lorsque les données sont extraites ou toutes les lignes du fichier de données utilisateur, lorsque les données sont copiées dans un serveur SQL Server. Une valeur inférieure à 1 réinitialise BCPBATCH à la valeur par défaut.
BCPDELAYREADFMT
Une valeur booléenne, si elle est définie sur true, entraîne la lecture de bcp_readfmt lors de l’exécution. Si la valeur est false (valeur par défaut), bcp_readfmt lit immédiatement le fichier de format. Une erreur de séquence se produit si BCPDELAYREADFMT a la valeur true et que vous appelez bcp_columns ou bcp_setcolfmt.
Une erreur de séquence se produit également si vous appelez bcp_control(hdbc, BCPDELAYREADFMT, (void *)FALSE) après avoir appelé bcp_control(hdbc, BCPDELAYREADFMT, (void *)TRUE) et bcp_writefmt.
Pour plus d’informations, consultez La découverte des métadonnées.
BCPFILECP
iValue contient le numéro de la page de codes du fichier de données. Vous pouvez spécifier le nombre de la page de codes, par exemple 1252 ou 850, ou l’une de ces valeurs :
BCPFILE_ACP : les données du fichier se trouvent dans Microsoft Windows ?? page de codes du client.
BCPFILE_OEMCP : les données du fichier se trouve dans la page de codes OEM du client (par défaut).
BCPFILE_RAW : les données du fichier se trouve dans la page de codes de SQL Server.
BCPFILEFMT
Numéro de version du format de fichier de données. Il peut s’agir de 80 (SQL Server 2000), 90 (SQL Server 2005), 100 (SQL Server 2008 ou SQL Server 2008 R2), 110 (SQL Server 2012) ou 120 (SQL Server 2014). 120 est la valeur par défaut. Cela est utile pour exporter et importer des données dans des formats pris en charge par la version antérieure du serveur. Par exemple, pour importer des données obtenues à partir d’une colonne de texte dans un serveur SQL Server 2000 dans une colonne varchar(max) dans un serveur SQL Server 2005 ou ultérieur, vous devez spécifier 80. De même, si vous spécifiez 80 lors de l’exportation de données à partir d’une colonne varchar(max), elle est enregistrée comme les colonnes de texte sont enregistrées au format SQL Server 2000 et peuvent être importées dans une colonne de texte d’un serveur SQL Server 2000.
BCPFIRST
Première ligne de données à copier dans un fichier ou une table. La valeur par défaut est 1 ; une valeur inférieure à 1 réinitialise cette option à sa valeur par défaut.
BCPFIRSTEX
Pour les opérations de sortie BCP, spécifie la première ligne de la table de base de données à copier dans le fichier de données.
Pour BCP dans les opérations, spécifie la première ligne du fichier de données à copier dans la table de base de données.
Le paramètre iValue doit ê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.
BCPFMTXML
Spécifie que le fichier de format généré doit être au format XML. Elle est désactivée par défaut.
Les fichiers de format XML offrent une plus grande flexibilité, mais avec des contraintes ajoutées. Par exemple, vous ne pouvez pas spécifier le préfixe et le terminateur d’un champ simultanément, ce qui était possible dans les fichiers de format plus anciens.
Remarque
Les fichiers de format XML ne sont pris en charge que lorsque SQL Server est installé avec SQL Server Native Client.
BCPHINTS
iValue contient un pointeur de chaîne de caractères SQLTCHAR. 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 la première sont ignorés. Pour plus d’informations sur les indicateurs de traitement de copie en bloc, consultez l’utilitaire bcp.
BCPKEEPIDENTITY
Quand iValue a la valeur TRUE, spécifie que les fonctions 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é. S’il n’est pas défini, de nouvelles valeurs d’identité 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.
BCPKEEPNULLS
Spécifie si les valeurs de données vides dans le fichier sont converties en valeurs NULL dans la table SQL Server. Lorsque iValue a la valeur TRUE, les valeurs vides sont converties en valeurs NULL dans la table SQL Server. La valeur par défaut est que les valeurs vides doivent être converties en valeur par défaut pour la colonne de la table SQL Server si une valeur par défaut existe.
BCPLAST
Dernière ligne à copier. La valeur par défaut consiste à copier toutes les lignes ; une valeur inférieure à 1 réinitialise cette option à sa valeur par défaut.
BCPLASTEX
Pour les opérations de sortie BCP, spécifie la dernière ligne de la table de base de données à copier dans le fichier de données.
Pour BCP dans les opérations, spécifie la dernière ligne du fichier de données à copier dans la table de base de données.
Le paramètre iValue doit ê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.
BCPMAXERRS
Nombre d’erreurs autorisées avant l’échec de l’opération de copie en bloc. La valeur par défaut est 10 ; une valeur inférieure à 1 réinitialise cette option à sa valeur par défaut. La copie en bloc impose un maximum de 65 535 erreurs. Une tentative de définition de cette option sur une valeur supérieure à 65 535 entraîne la définition de l’option sur 65 535.
BCPODBC
Lorsque la valeur EST TRUE, spécifie que les valeurs datetime et smalldatetime enregistrées au format caractère utilisent le préfixe et le suffixe de séquence d’échappement ODBC. L’option BCPODBC s’applique uniquement à BCP_OUT.
Lorsque la valeur EST FALSE, une valeur datetime représentant le 1er janvier 1997 est convertie en chaîne de caractères : 1997-01-01 00:00:00.000. Lorsque la valeur true, la même valeur datetime est représentée comme suit : {ts '1997-01-01-00:00:00.000'}.
BCPROWCOUNT
Retourne le nombre de lignes affectées par l’opération BCP actuelle (ou dernière).
BCPTEXTFILE
Lorsque la valeur est TRUE, spécifie que le fichier de données est un fichier texte, plutôt qu’un fichier binaire. Si le fichier est un fichier texte, BCP détermine s’il s’agit ou non d’Unicode en vérifiant le marqueur d’octet Unicode dans les deux premiers octets du fichier de données.
BCPUNICODEFILE
Lorsque la valeur est TRUE, spécifie que le fichier d’entrée est un fichier Unicode.
iValue
Valeur de l’eOption spécifié.
iValue est un cast de valeur entier (LONGLONG) en pointeur void pour permettre une extension future aux valeurs 64 bits.
Retours
SUCCEED ou FAIL.
Remarques
Cette fonction 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 d’une copie en bloc, les nombres des premières et dernières lignes à copier à partir d’un fichier de données et la taille du lot.
Cette fonction est également utilisée pour spécifier l’instruction SELECT lors de la copie en bloc à partir de SQL Server, le jeu de résultats d’un SELECT. Définissez eOption sur BCPHINTS et définissez iValue pour avoir un pointeur vers une chaîne SQLTCHAR contenant l’instruction SELECT.
Ces paramètres de contrôle sont significatifs uniquement lors de la copie entre un fichier utilisateur et une table SQL Server. Les paramètres de contrôle n’ont aucun effet sur les lignes copiées dans SQL Server avec bcp_sendrow.
Exemple :
// Variables like henv not specified.
SQLHDBC hdbc;
DBINT nRowsProcessed;
// Application initiation, get an ODBC environment handle, allocate the
// hdbc, and so on.
...
// Enable bulk copy prior to connecting on allocated hdbc.
SQLSetConnectAttr(hdbc, SQL_COPT_SS_BCP, (SQLPOINTER) SQL_BCP_ON,
SQL_IS_INTEGER);
// Connect to the data source, return on error.
if (!SQL_SUCCEEDED(SQLConnect(hdbc, _T("myDSN"), SQL_NTS,
_T("myUser"), SQL_NTS, _T("myPwd"), SQL_NTS)))
{
// Raise error and return.
return;
}
// Initialize bulk copy.
if (bcp_init(hdbc, _T("address"), _T("address.add"), _T("addr.err"),
DB_IN) == FAIL)
{
// Raise error and return.
return;
}
// Set the number of rows per batch.
if (bcp_control(hdbc, BCPBATCH, (void*) 1000) == FAIL)
{
// Raise error and return.
return;
}
// Set file column count.
if (bcp_columns(hdbc, 1) == FAIL)
{
// Raise error and return.
return;
}
// Set the file format.
if (bcp_colfmt(hdbc, 1, 0, 0, SQL_VARLEN_DATA, '\n', 1, 1)
== FAIL)
{
// Raise error and return.
return;
}
// Execute the bulk copy.
if (bcp_exec(hdbc, &nRowsProcessed) == FAIL)
{
// Raise error and return.
return;
}
printf_s("%ld rows processed by bulk copy.", nRowsProcessed);