Utilisation de points de contrôle dans les packages

Integration Services peut redémarrer les packages ayant échoué à partir du point d'échec, au lieu de reprendre l'exécution du package tout entier. Si un package est configuré pour utiliser des points de contrôle, des informations sur l'exécution du package sont écrites dans un fichier de point de contrôle. Lorsque le package ayant échoué est relancé, le fichier de point de contrôle est utilisé pour redémarrer le package à partir du point d'échec. Si le package est exécuté avec succès, le fichier de point de contrôle est supprimé, puis recréé à l'exécution suivante du package.

L'utilisation des points de contrôle dans un package offre les avantages suivants :

  • Éviter de répéter le téléchargement ascendant et descendant de fichiers volumineux. Par exemple, un package qui télécharge plusieurs fichiers volumineux à l'aide d'une tâche FTP pour chaque téléchargement peut être redémarré après l'échec du téléchargement d'un seul fichier, puis ne reprendre le téléchargement que pour ce fichier.

  • Éviter de répéter le téléchargement de grands volumes de données. Par exemple, un package qui effectue des insertions en bloc dans des tables de dimension d'un entrepôt de données à l'aide d'une tâche d'insertion en bloc différente pour chaque dimension, peut être redémarré si l'insertion échoue pour une table de dimension, et ne recharger que cette dimension.

  • Éviter de répéter l'agrégation de valeurs. Par exemple, un package qui calcule de nombreux agrégats, tels que des moyennes et des sommes, à l'aide d'une tâche de flux de données distincte pour la réalisation de chaque agrégation, peut être redémarré en cas d'échec du calcul d'une agrégation pour ne recalculer que cette agrégation.

Si un package est configuré pour utiliser les points de contrôle, Integration Services capture le point de redémarrage dans le fichier de point de contrôle. Le type de conteneur qui échoue et l'implémentation de fonctionnalités telles que les transactions affectent le point de redémarrage enregistré dans le fichier de point de contrôle. Les valeurs actuelles des variables sont également capturées dans le fichier de point de contrôle. Toutefois, les valeurs des variables de type de données Object ne sont pas enregistrées dans les fichiers de point de contrôle.

Si le package redémarre, Integration Services ne recharge pas les configurations du package. Le package utilise plutôt les informations de configuration écrites dans le fichier de point de contrôle. Cette procédure permet de s'assurer que lors de la réexécution du package, celui-ci utilisera les mêmes configurations qu'au moment de son échec.

Définition des points de redémarrage

Les composants Integration Services suivants sont des unités atomiques de travail que vous pouvez redémarrer à l'aide de points de contrôle :

  • Tâche   Le conteneur d'hôte de tâche, qui encapsule une seule tâche, est la plus petite unité atomique de travail à pouvoir être redémarrée.

    [!REMARQUE]

    Dans la mesure où la tâche de flux de données (qui comprend l'ensemble de son contenu) est une unité atomique de travail, vous ne pouvez pas redémarrer un package au milieu du flux de données. Pour éviter de réexécuter l'ensemble du flux de données, vous pouvez concevoir le package de manière à inclure plusieurs tâches de flux de données. De cette façon, lorsque le package redémarre, seules les tâches de flux de données ayant échoué sont réexécutées.

  • Conteneur transactionnel   Il s'agit d'une unité atomique de travail pouvant être redémarrée. Si un package est arrêté alors qu'un conteneur transactionnel est en cours d'exécution, la transaction est arrêtée et tout travail effectué par la transaction est restaurée. Toutefois, le fichier de point de contrôle ne contient pas d'informations sur le travail effectué par les conteneurs enfants ; en outre, le conteneur transactionnel et ses conteneurs enfants sont réexécutés lorsque le package redémarre.

    Pour minimiser les conflits possibles entre les points de contrôle et les transactions, Integration Services n'enregistre pas d'informations de point de contrôle sur ce qui se passe dans un conteneur lorsque l'une des conditions suivantes est vraie :

    • La valeur de la propriété TransactionOption du conteneur est Required.

      —ou—

    • La valeur de la propriété TransactionOption du conteneur est Supported, mais le conteneur parent possède une transaction ou est inscrit dans cette dernière.

    [!REMARQUE]

    L'utilisation de points de contrôle et de transactions dans le même package peut entraîner des résultats inattendus. Par exemple, lorsqu'un package échoue et redémarre à partir d'un point de contrôle, il peut répéter une transaction qui a déjà été correctement validée.

  • Conteneur de boucles Foreach   Il s'agit d'une autre unité atomique de travail pouvant être redémarrée. Toutefois, le fichier de point de contrôle ne contient pas d'informations sur le travail effectué par les conteneurs enfants ; en outre, le conteneur de boucles Foreach et ses conteneurs enfants sont réexécutés lorsque le package redémarre.

Configuration d'un package pour le redémarrage

Le fichier de point de contrôle comprend les résultats d'exécution de toutes les unités de travail (comme décrit antérieurement dans cette rubrique) achevées, les valeurs actuelles des variables système et définies par l'utilisateur, ainsi que les informations de configuration du package. Le fichier peut également inclure un identificateur unique du package. Pour redémarrer correctement le package, l'identificateur du package dans le fichier de point de contrôle doit correspondre au package. Dans le cas contraire, le redémarrage échoue. Cela empêche un package d'utiliser un fichier de point de contrôle écrit par une version de package différente. Si un package redémarre après avoir été exécuté correctement, le fichier de point de contrôle est supprimé.

Le tableau suivant présente les propriétés de package que vous définissez pour implémenter les points de contrôle.

Propriété

Description

CheckpointFileName

Indique le nom du fichier de point de contrôle.

CheckpointUsage

Indique si les points de contrôle sont utilisés.

SaveCheckpoints

Indique si le package enregistre les points de contrôle. Cette propriété doit avoir pour valeur True pour redémarrer le package à partir d'un point d'échec.

Vous pouvez également définir la propriété FailPackageOnFailure à true pour tous les conteneurs du package que vous voulez identifier comme points de redémarrage.

Vous pouvez utiliser la propriété ForceExecutionResult pour tester l'utilisation des points de contrôle dans un package. En définissant la propriété ForceExecutionResult d'une tâche ou d'un conteneur comme ayant la valeur Failure, vous pouvez imiter un échec en temps réel. Lorsque vous redémarrez le package, la tâche et les conteneurs ayant échoué sont réexécutés.

Définition de la propriété CheckpointUsage

Le tableau suivant liste les valeurs de la propriété CheckpointUsage.

Valeur

Description

Never

Spécifie que le fichier de point de contrôle n'est pas utilisé et que le package est exécuté à partir du début du flux de travail du package.

Always

Spécifie que le fichier de point de contrôle est toujours utilisé et que le package redémarre à partir du point de l'échec de la précédente exécution. Si le fichier de point de contrôle est introuvable, le package échoue.

IfExists

Spécifie que le fichier de point de contrôle est utilisé s'il existe. Si le fichier de point de contrôle existe, le package redémarre à partir du point de l'échec de la précédente exécution. Sinon il est exécuté à partir du début du flux de travail du package.

[!REMARQUE]

L'option /CheckPointing on de dtexec revient à affecter la valeur True à la propriété SaveCheckpoints du package et la valeur Always à la propriété CheckpointUsage. Pour plus d'informations, consultez Utilitaire dtexec.

Choix d'un emplacement pour les fichiers de point de contrôle

Dans un cluster de basculement où Integration Services est installé sur plusieurs nœuds du cluster, vous pouvez enregistrer les fichiers de point de contrôle à un emplacement partagé. Si un basculement se produit, vous pouvez redémarrer un package interrompu à partir du dernier point de contrôle sur un autre nœud du cluster.

Sécurisation des fichiers de point de contrôle

La protection au niveau du package n'inclut pas la protection des fichiers de point de contrôle ; vous devez donc sécuriser ces fichiers séparément. Les données de point de contrôle peuvent être stockées uniquement dans le système de fichiers ; en outre, vous devez utiliser une liste de contrôle d'accès au système d'exploitation pour contribuer à sécuriser l'emplacement ou le dossier de stockage du fichier. Il est important de sécuriser les fichiers de point de contrôle, car ceux-ci contiennent des informations sur l'état du package, notamment les valeurs actuelles des variables. Une variable peut ainsi contenir un jeu d'enregistrements doté de plusieurs lignes de données privées, telles que des numéros de téléphone. Pour plus d'informations, consultez Contrôle de l'accès aux fichiers utilisés par des packages.

Pour configurer les propriétés des points de contrôle

Icône Integration Services (petite) Rester à jour avec Integration Services

Pour obtenir les derniers téléchargements, articles, exemples et vidéos de Microsoft, ainsi que des solutions sélectionnées par la communauté, visitez la page Integration Services sur MSDN ou TechNet :

Pour recevoir une notification automatique de ces mises à jour, abonnez-vous aux flux RSS disponibles sur la page.

Historique des modifications

Mise à jour du contenu

  • Désignation plus claire des composants représentant des unités de travail dans la section « Définition des points de redémarrage ».

  • Ajout de la section « Choix d'un emplacement pour les fichiers de point de contrôle ».