Partager via


tâche d'insertion en bloc

S’applique à : SQL Server SSIS Integration Runtime dans Azure Data Factory

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 d’Integration Services (SSIS).

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 la rubrique suivante :

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 :

Définir les propriétés d'une tâche ou d'un conteneur

Éditeur de tâche d'insertion en bloc (page Connexion)

Utilisez la page Connexion de la boîte de dialogue Éditeur de tâche d'insertion en bloc pour définir la source et la destination de l'opération d'insertion en bloc et le format à utiliser.

Pour en savoir plus sur l’utilisation des insertions en bloc, consultez Tâche d’insertion en bloc et Fichiers de format pour l’importation ou l’exportation de données (SQL Server).

Options

Connection
Sélectionnez un gestionnaire de connexions OLE DB dans la liste ou cliquez sur <Nouvelle connexion...> pour créer une connexion.

Rubriques connexes : Gestionnaire de connexions OLE DB

Table de destination
Tapez le nom de la table de destination ou affichez ou sélectionnez une table ou une vue dans la liste.

Format
Sélectionnez la source du format de l'insertion en bloc. Cette propriété dispose des options répertoriées dans le tableau suivant.

Valeur Description
Utiliser un fichier Sélectionnez un fichier contenant la spécification de format. Cette option affiche l'option dynamique FormatFile.
Spécifier Spécifiez le format. Cette option affiche les options dynamiques RowDelimiter et ColumnDelimiter.

File
Sélectionnez un gestionnaire de connexions de fichier ou de fichier plat dans la liste, ou cliquez sur <Nouvelle connexion...> pour créer une connexion.

L'emplacement du fichier dépend du moteur de base de données SQL Server spécifié dans le gestionnaire de connexions pour cette tâche. Le fichier texte doit être accessible au moteur de base de données SQL Server situé sur un disque dur local du serveur ou via un partage ou un lecteur mappé à SQL Server. Le fichier n'est pas accessible au runtime SSIS.

Si vous accédez au fichier source en utilisant un gestionnaire de connexions de fichiers plats, la tâche d'insertion en bloc n'utilise pas le format défini dans le gestionnaire de connexions de fichiers plats. 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.

Rubriques connexes : Gestionnaire de connexions de fichiers, Gestionnaire de connexions de fichiers plats

Actualiser les tables
Actualise la liste des tables et des vues.

Options dynamiques de format

Format = Utiliser un fichier

FormatFile
Tapez le chemin du fichier de format ou cliquez sur le bouton avec des points de suspension (...) pour rechercher le fichier de format.

Format = Spécifier

RowDelimiter
Spécifiez le délimiteur de ligne dans le fichier source. La valeur par défaut est {CR}{LF} .

ColumnDelimiter
Spécifiez le délimiteur de colonne dans le fichier source. La valeur par défaut est Tab.

Éditeur de tâche d'insertion en bloc (page Général)

Utilisez la page Général de la boîte de dialogue Éditeur de tâche d'insertion en bloc afin d'attribuer un nom et décrire la tâche d'insertion en bloc.

Options

Nom
Permet d'attribuer un nom unique à la tâche d'insertion en bloc. Ce nom sert d'étiquette à l'icône de la tâche.

Notes

Les noms de tâche doivent être uniques dans un package.

Description
Permet de fournir une description à la tâche d'insertion en bloc.

Éditeur de tâche d'insertion en bloc (page Options)

Utilisez la page Options de la boîte de dialogue Éditeur de tâche d'insertion en bloc afin de définir les propriétés de l'opération d'insertion en bloc. La tâche d’insertion en bloc copie des volumes importants de données dans une table ou une vue Microsoft SQL Server.

Pour en savoir plus sur l’utilisation des insertions en bloc, consultez Tâche d’insertion en bloc et BULK INSERT (Transact-SQL).

Options

CodePage
Permet d'indiquer la page de codes des données dans le fichier de données.

DataFileType
Permet d'indiquer la valeur correspondant au type de données à utiliser lors d'une opération de chargement.

BatchSize
Permet d'indiquer le nombre de lignes contenues dans un traitement. La valeur par défaut correspond à la totalité du fichier de données. Si vous attribuez à BatchSize la valeur zéro, les données sont chargées dans un traitement unique.

LastRow
Permet de spécifier la dernière ligne à copier.

FirstRow
Permet de spécifier la première ligne à partir de laquelle la copie doit commencer.

Options

Terme Définition
Contraintes de validation Permet de vérifier les contraintes s'appliquant à la table et aux colonnes.
Conserver les valeurs NULL Permet de conserver les valeurs Null pendant l'opération d'insertion en bloc au lieu d'insérer des valeurs par défaut dans les colonnes vides.
Activer l’insertion d’identité Permet d'insérer des valeurs existantes dans une colonne d'identité.
Verrou de table Permet de verrouiller la table lors de l'opération d'insertion en bloc.
Exécuter les déclencheurs Lance tout déclencheur d'insertion, de mise à jour ou de suppression sur la table.

SortedData
Implique l'ajout de la clause ORDER BY dans l'instruction d'insertion en bloc. Le nom de colonne que vous fournissez doit être celui d'une colonne valide pour la table de destination. La valeur par défaut est false. En d'autres termes, les données ne sont pas triées par une clause ORDER BY.

MaxErrors
Permet de spécifier le nombre maximal d'erreurs tolérées avant l'annulation de l'opération d'insertion en bloc. La valeur 0 indique qu'un nombre illimité d'erreurs est autorisé.

Notes

Chaque ligne ne pouvant pas être importée par l'opération de chargement en masse est comptée comme une erreur.