FIX : Une tâche de script ou un composant de script est exécutée plusieurs fois en double lorsque vous exécutez des paquets qui contiennent des tâches de script ou des composants de script en parallèle dans SSIS

S’applique à : Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise Edition

Bug : 447320 (SQLBUDT)Bug : 411552 (SQLBUDT)

Symptômes


Prenons l’exemple du scénario suivant :
  • Vous disposez d'un package Microsoft SQL Server 2005 Integration Services (SSIS) qui contient une tâche de script dans le flux de contrôle ou un composant de script dans le flux de données.
  • Vous copiez et collez le paquet SSIS (le fichier .dtsx) pour créer plusieurs copies du même paquet.
  • Vous créez des tâches de paquet d'exécution dans un package SSIS parent, puis spécifiez les paquets copiés dans les tâches de paquet d'exécution.
  • Les tâches de paquet d'exécution s'exécutent en parallèle dans le package parent.
  • La propriété ExecuteOutOfProcess des tâches Execute Package est réglé sur FALSE.
  • Vous exécutez le paquet SSIS parent.
Dans ce scénario, vous remarquerez peut-être qu'une tâche de script ou un composant de script est exécuté plusieurs fois en double. Il peut même être exécuté à partir de la mauvaise tâche de paquet d'exécution.

Cause


Ce problème se produit en raison des noms de projet en double des tâches de script ou des composants de script dans Microsoft Visual Studio for Applications. Après avoir copié et coller le fichier .dtsx, les tâches de script ou les composants de script dans ces deux paquets ont le même GUID pour la propriété ID. Lorsque vous exécutez le package SSIS parent, SSIS peut exécuter incorrectement l'une des tâches de script ou les composants de script plusieurs fois en double. Toutefois, vous vous attendez à ce que SSIS exécute chaque tâche de script ou composant de script indépendamment. Remarque Visual Studio for Applications est utilisé pour concevoir et compiler les tâches de script ou les composants de script dans SSIS.

Résolution


Informations sur le pack de service

Pour résoudre ce problème, obtenez le dernier pack de service pour SQL Server 2005. Pour plus d'informations, cliquez sur le numéro d'article suivant pour voir l'article dans la base de connaissances Microsoft :
913089 Comment obtenir le dernier pack de service pour SQL Server 2005

Solution de contournement


Pour contourner ce problème, suivez les étapes suivantes :
  1. Ouvrez le paquet SSIS copié dans SQL Server Business Intelligence Development Studio.
  2. Appuyez sur CTRL-X pour supprimer la tâche de script problématique ou le composant de script problématique.
  3. Dans le même paquet qui contient la tâche de script problématique ou le composant de script problématique, appuyez sur CTRL-V pour coller la tâche de script ou le composant de script.
Après avoir suivi ces étapes, une nouvelle interface GUID sera générée automatiquement pour la propriété ID. Si la propriété PreCompile pour le paquet qui contient la tâche de script problématique ou le composant de script problématique est réglé sur True, les tâches de script ou les composants de script sont précompilés. Dans ce cas, vous devez recompiler les tâches de script ou les composants de script. Pour ce faire, ouvrez le script designer, puis fermez le script designer. Vous devrez peut-être redéfinir les contraintes de précédent pour la tâche de script collé ou le composant de script collé. De même, pour créer manuellement un nom de projet unique pour les tâches de script, cliquez sur Script Design Dans la boîte de dialogue de script Transformation Editor, puis modifiez manuellement la propriété Nom de projet dans Visual Studio for Applications. Remarque Vous ne pouvez pas créer un nom de projet unique pour les composants de script dans le flux de données.

Statut


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.

Informations supplémentaires


Procédure pour reproduire le problème

  1. Modifiez les scripts dans le package SSIS copié pour personnaliser une opération pour le paquet. Vous pouvez personnaliser une boîte de messages ou un événement enregistré pour reproduire le problème.
  2. Enregistrer les modifications apportées au paquet copié.
  3. Créez un package SSIS qui utilise une tâche de script dans le flux de contrôle ou qui utilise un composant de script dans le flux de données.
  4. Enregistrer le paquet.
  5. Copiez et collez le paquet dans Solution Explorer ou dans le système de fichiers.
  6. Créez un nouveau package SSIS parent qui utilise deux tâches de package d'exécution pour exécuter le package SSIS original et le paquet SSIS copié en parallèle.
  7. Exécutez le forfait parent.
Soit la tâche de script du paquet SSIS d'origine est exécutée ou la tâche de script du paquet copié est exécutée. Toutefois, vous vous attendez à ce que les deux paquets SSIS dans le package parent soient exécutés.