tâche d'insertion en bloc
La tâche d'insertion en bloc est un moyen efficace pour copier de gros volumes de données dans une table ou une vue SQL Server . Par exemple, supposons que votre entreprise stocke la liste de ses produits d’un million de lignes sur un mainframe, mais que son système d’e-commerce utilise SQL Server pour fournir des données à des pages web. Vous devez mettre à jour la table des produits SQL Server toutes les nuits, à l'aide de la liste principale des produits depuis le gros ordinateur. Pour mettre à jour la table, vous enregistrez la liste des produits dans un fichier au format délimité par des tabulations, puis vous utilisez la tâche d'insertion en bloc pour copier les données directement dans la table SQL Server .
Pour garantir une copie de données à haute vitesse, les transformations ne peuvent s'effectuer sur les données lors de leur déplacement entre le fichier source et la table ou la vue.
Considérations sur l'utilisation
Avant d'utiliser la tâche d'insertion en bloc, tenez compte des éléments suivants :
La tâche d'insertion en bloc ne peut transférer des données que depuis un fichier texte vers une table ou une vue SQL Server . Pour utiliser la tâche d’insertion en bloc afin de transférer des données depuis d’autres systèmes de gestion de base de données (SGBD), vous devez exporter les données de la source vers un fichier texte, puis les importer depuis celui-ci vers une table ou une vue SQL Server .
La destination doit être une table ou une vue d'une base de données SQL Server . Si la table ou la vue de destination contient déjà des données, les nouvelles données sont ajoutées à la table existante lors de l'exécution de la tâche d'insertion en bloc. Si vous souhaitez remplacer les données, avant de lancer la tâche d'insertion en bloc, utilisez une tâche d'exécution SQL qui applique une instruction DELETE ou TRUNCATE. Pour plus d'informations, consultez Execute SQL Task.
Vous pouvez utiliser un fichier de format dans l'objet tâche d'insertion en bloc. Si vous avez créé un fichier de format à l'aide de l'utilitaire bcp , vous pouvez spécifier son chemin d'accès dans la tâche d'insertion en bloc. La tâche d'insertion en bloc prend en charge les fichiers de format XML et non-XML. Pour plus d’informations sur les fichiers de format, consultez Fichiers de format pour l’importation ou l’exportation de données (SQL Server).
Seuls les membres du rôle serveur fixe sysadmin peuvent exécuter un package contenant une tâche d'insertion en bloc.
Tâche d'insertion en bloc avec des transactions
Si aucune taille de traitement n'est définie, la copie par bloc complète est traitée comme une transaction. Une taille de traitement égale à 0 indique que les données sont insérées en un seul traitement. Si une taille de traitement est définie, chaque traitement représente une transaction validée à la fin de l'exécution de ce traitement.
Le fait que la tâche d'insertion en bloc se joigne ou non à la transaction sur package détermine son comportement vis-à-vis des transactions de package. Si la tâche d'insertion en bloc ne se joint pas à la transaction de package, chaque traitement exempt d'erreurs est validé comme une unité, avant que le traitement suivant soit traité. Si la tâche d'insertion en bloc se joint à la transaction de package, les traitements d'instructions exempts d'erreurs restent dans la transaction à la fin de la tâche. Ces traitements sont soumis à la validation ou à l'annulation du package.
Un échec de la tâche d'insertion en bloc ne provoque pas automatiquement l'annulation des traitements correctement chargés ; de même, si la tâche réussit, les traitements ne sont pas automatiquement validés. La validation et l'annulation ne se produisent qu'en fonction des paramètres de propriétés du package et du flux de travail.
Source et destination
Lorsque vous spécifiez l'emplacement du fichier texte source, tenez compte des éléments suivants :
Le serveur doit être autorisé à accéder au fichier et à la base de données de destination.
Le serveur exécute la tâche d'insertion en bloc. Par conséquent, tout fichier de format utilisé par la tâche doit se trouver sur le serveur.
Le fichier source chargé par la tâche d'insertion en bloc peut se trouver sur un serveur distant ou sur le même serveur que la base de données SQL Server dans laquelle les données sont insérées. Si le fichier se situe sur un serveur distant, vous devez spécifier son nom en indiquant le nom UNC (Universal Naming Convention) dans le chemin d'accès.
Optimisation des performances
Pour optimiser les performances, tenez compte des éléments suivants :
Si le fichier texte est situé sur le même ordinateur que la base de données SQL Server dans laquelle les données sont insérées, la copie a lieu à une vitesse plus rapide puisque les données n'ont pas à transiter par le réseau.
La tâche d'insertion en bloc n'enregistre pas les lignes à l'origine d'erreurs. Si vous devez capturer ces informations, utilisez les sorties d'erreur des composants de flux de données afin de récupérer dans un fichier d'exception les lignes à l'origine des erreurs.
Entrées de journal personnalisées disponibles dans la tâche d'insertion en bloc
Le tableau suivant répertorie les entrées de journal personnalisées de la tâche d'insertion en bloc. Pour plus d’informations, consultez Journalisation Integration Services (SSIS) et Messages personnalisés pour la journalisation.
Entrée du journal | Description |
---|---|
BulkInsertTaskBegin |
Indique que l'insertion en bloc a commencé. |
BulkInsertTaskEnd |
Indique que l'insertion en bloc est terminée. |
BulkInsertTaskInfos |
Fournit des informations détaillées concernant la tâche. |
Configuration de la tâche d'insertion en bloc
Vous pouvez configurer la tâche d'insertion en bloc comme suit :
Spécifiez le gestionnaire de connexions OLE DB à utiliser pour établir la connexion à la base de données SQL Server de destination et la table ou vue dans laquelle les données sont insérées. La tâche d'insertion en bloc prend uniquement en charge les connexions OLE DB de la base de données de destination.
Indiquez le gestionnaire de connexions de fichiers ou de fichiers plats pour accéder au fichier source. La tâche d'insertion en bloc utilise le gestionnaire de connexions uniquement pour l'emplacement du fichier source. La tâche ignore les autres options que vous sélectionnez dans l'éditeur de gestionnaire de connexions.
Définissez le format adopté par la tâche d'insertion en bloc, soit en utilisant un fichier de format, soit en configurant les séparateurs de colonnes et de lignes des données source. Si vous utilisez un fichier de format, indiquez le gestionnaire de connexions de fichiers permettant d'y accéder.
Spécifiez les actions à réaliser dans la table ou la vue de destination au moment où la tâche insère les données. Les options comprennent la vérification éventuelle des contraintes, l'activation des insertions d'identité, la conservation des valeurs NULL, l'exécution des déclencheurs ou le verrouillage de la table.
Indiquez les informations relatives au traitement de données à insérer, telles que la taille du traitement, les première et dernière lignes à insérer depuis le fichier, le nombre d'erreurs d'insertion pouvant se produire avant que la tâche arrête d'insérer des lignes et les noms des colonnes à trier.
Si la tâche d'insertion en bloc se sert d'un gestionnaire de connexions de fichiers plats pour accéder au fichier source, elle n'utilise pas le format spécifié dans ce gestionnaire. Elle utilise à la place le format spécifié dans un fichier de format, ou les valeurs des propriétés RowDelimiter et ColumnDelimiter de la tâche.
Vous pouvez définir les propriétés par le biais du concepteur SSIS ou par programmation.
Pour plus d'informations sur les propriétés définissables dans le concepteur SSIS , cliquez sur l'une des rubriques suivantes :
Pour plus d'informations sur la définition de ces propriétés dans le concepteur SSIS , cliquez sur la rubrique suivante :
Configuration par programme de la tâche d'insertion en bloc
Pour plus d'informations sur la définition par programme de ces propriétés, cliquez sur la rubrique suivante :
Tâches associées
Définir les propriétés d'une tâche ou d'un conteneur
Contenu associé
Article technique, You may get "Unable to prepare the SSIS bulk insert for data insertion" error on UAC enabled systems, sur support.microsoft.com.
Article technique, Guide des performances de chargement des données, sur le site msdn.microsoft.com.
Article technique, Using SQL Server Integration Services to Bulk Load Data, sur le site simple-talk.com.