Génération, déploiement et débogage d'objets personnalisés
Après avoir écrit le code d'un objet personnalisé pour Integration Services, vous devez générer l'assembly, le déployer, l'intégrer dans le Concepteur SSIS pour le rendre disponible dans les packages, le tester et le déboguer.
Étapes pour générer, déployer et déboguer un objet personnalisé pour Integration Services
Vous avez déjà écrit les fonctionnalités personnalisées de votre objet. À présent, vous devez les tester et les rendre disponibles aux utilisateurs. Les étapes sont très similaires pour tous les types d'objets personnalisés que vous pouvez créer pour Integration Services.
Voici les étapes à suivre pour les générer, les déployer et les déboguer :
Signez l'assembly à générer à l'aide d'un nom fort.
Générez l'assembly.
Déployez l'assembly en le déplaçant ou en le copiant vers le dossier Integration Services approprié.
Installez l'assembly dans le Global Assembly Cache (GAC).
Ajoutez l'objet à la boîte à outils, lorsqu'il s'agit d'une tâche ou d'un composant de flux de données.
Résolvez les problèmes de déploiement, si nécessaire.
Testez et déboguez votre code.
Signature de l'assembly
Lorsqu'un assembly est destiné à être partagé, il doit être installé dans le Global Assembly Cache. Une fois que l'assembly est ajouté au Global Assembly Cache, il peut être utilisé par des applications telles que Business Intelligence Development Studio. Une exigence du Global Assembly Cache stipule que l'assembly doit être signé avec un nom fort, lequel garantit qu'un assembly est globalement unique. Un assembly avec nom fort possède un nom qualifié complet qui comprend son nom, sa culture, sa clé publique et son numéro de version. Le runtime utilise ces informations pour rechercher l'assembly et le distinguer des autres assemblys portant le même nom.
Pour signer un assembly avec un nom fort, vous devez d'abord avoir ou créer une paire de clés publique/privée. Cette paire de clés de chiffrement publique et privée est utilisée au moment de la génération pour créer un assembly avec nom fort.
Pour plus d'informations sur les noms forts et sur les étapes à suivre pour signer un assembly, consultez les rubriques suivantes dans la documentation du Kit de développement logiciel .NET Framework :
Assemblys avec noms forts
Création d'une paire de clés
Signature d'un assembly avec un nom fort
Vous pouvez signer facilement votre assembly avec un nom fort dans Visual Studio au moment de la génération. Dans la boîte de dialogue Propriétés du projet, sélectionnez l'onglet Signature. Sélectionnez l'option Signer l'assembly et fournissez le chemin d'accès du fichier de clé (.snk).
Génération de l'assembly
Après avoir signé le projet, vous devez générer ou régénérer le projet ou la solution en utilisant les commandes disponibles dans le menu Générer de BI Development Studio. Votre solution peut contenir un projet séparé d' interface utilisateur personnalisée, lequel doit également être signé avec un nom fort et peut être généré en même temps.
La méthode la plus pratique pour effectuer les deux étapes suivantes, à savoir le déploiement de l'assembly et son installation dans le Global Assembly Cache, consiste à écrire le script de ces étapes sous la forme d'un événement après génération dans Visual Studio. Les événements de génération sont disponibles à partir de la page Compiler des propriétés d'un projet Visual Basic et à partir de la page Événements de génération d'un projet C#. Le chemin d'accès complet est requis pour les utilitaires d'invite de commandes tels que gacutil.exe. Les guillemets sont requis à la fois autour des chemins d'accès qui contiennent des espaces et autour des macros telles que $(TargetPath) qui s'étendent aux chemins d'accès qui contiennent des espaces.
Voici un exemple de ligne de commande d'événement après génération pour un module fournisseur d'informations personnalisé :
"C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\gacutil.exe" -u $(TargetName)
"C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\gacutil.exe" -i $(TargetFileName)
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\100\DTS\LogProviders "
Déploiement des assemblys
Le Concepteur SSIS localise les objets personnalisés disponibles dans les packages en énumérant les fichiers détectés dans une série de dossiers créée lorsque SQL Server Integration Services est installé. Lorsque les paramètres d'installation SQL Server par défaut sont utilisés, cet ensemble de dossiers se trouve sous C:\Program Files\Microsoft SQL Server\100\DTS. Toutefois, si vous créez un programme d'installation pour votre objet personnalisé, vous devez vérifier la valeur de la clé de Registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS\Setup\DtsPath pour vérifier l'emplacement de ce dossier.
Vous pouvez placer l'assembly dans le dossier de deux manières :
Déplacez ou copiez l'assembly compilé vers le dossier approprié après l'avoir généré. (Par commodité, vous pouvez inclure la commande de copie dans un événement après génération.)
Générez directement l'assembly dans le dossier approprié.
Les dossiers de déploiement suivants sous C:\Program Files\Microsoft SQL Server\100\DTS sont utilisés pour les divers types d'objets personnalisés :
Objet personnalisé |
Dossier de déploiement |
---|---|
Tâche |
Tâches |
Gestionnaire de connexions |
Connexions |
Module fournisseur d'informations |
LogProviders |
Composant de flux de données |
PipelineComponents |
Notes
Les assemblys sont copiés vers ces dossiers pour prendre en charge l'énumération des tâches, gestionnaires de connexions, etc. disponibles. Par conséquent, vous ne devez pas déployer des assemblys qui contiennent uniquement l'interface utilisateur personnalisée des objets personnalisés vers ces dossiers.
Installation de l'assembly dans le Global Assembly Cache
Pour installer l'assembly de tâche dans le Global Assembly Cache (GAC), utilisez l'outil en ligne de commande gacutil.exe ou faites glisser les assemblys vers le répertoire %system%\assembly. Par commodité, vous pouvez également inclure l'appel de gacutil.exe dans un événement après génération.
La commande suivante installe un composant nommé MyTask.dll dans le GAC en utilisant gacutil.exe.
gacutil /iF MyTask.dll
Vous devez fermer et rouvrir le Concepteur SSIS après avoir installé une nouvelle version de votre objet personnalisé. Si vous avez installé des versions antérieures de votre objet personnalisé dans le Global Assembly Cache, vous devez les supprimer avant d'installer la nouvelle version. Pour désinstaller un assembly, exécutez gacutil.exe et spécifiez le nom de l'assembly avec l'option /u.
Pour plus d'informations sur le Global Assembly Cache, consultez Global Assembly Cache Tool (Gactutil.exe) dans .NET Framework Tools.
Ajout d'une tâche ou d'un composant de flux de données à la boîte à outils
Après avoir déployé l'objet personnalisé et l'avoir installé dans le Global Assembly Cache, il peut être utilisé dans Business Intelligence Development Studio comme tout objet inclus dans SQL Server Integration Services. Toutefois, il doit être ajouté explicitement à la boîte à outils.
Pour ajouter un composant personnalisé à la boîte à outils
Cliquez avec le bouton droit sur la boîte à outils, puis cliquez sur Choisir les éléments.
Dans la boîte de dialogue Choisir des éléments de boîte à outils, cliquez sur l'onglet Éléments de flux de contrôle SSIS d'une tâche ou sur l'onglet Éléments de flux de données SSIS d'un composant de flux de données.
Activez la case à cocher située en regard de votre composant, puis cliquez sur OK.
Notes
Si le composant ne figure pas dans la liste, cliquez sur Parcourir pour le rechercher. Mais dans ce cas, il risque de ne pas s'installer correctement.
Dépannage du déploiement
Si votre objet personnalisé apparaît dans la boîte à outils ou la liste des objets disponibles, mais que vous n'êtes pas en mesure de l'ajouter à un package, essayez la procédure suivante :
Recherchez plusieurs versions de votre composant dans le Global Assembly Cache. S'il existe plusieurs versions du composant dans le Global Assembly Cache, il est possible que le concepteur ne soit pas en mesure de charger votre composant. Supprimez toutes les instances de l'assembly dans le Global Assembly Cache et ajoutez de nouveau l'assembly.
Assurez-vous qu'une seule instance unique de l'assembly existe dans le dossier de déploiement.
Réinitialisez la boîte à outils.
Attachez Visual Studio à devenv.exe et définissez un point d'arrêt pour parcourir votre code d'initialisation afin de vérifier qu'aucune exception ne se produit.
Test et débogage du code
L'approche la plus simple pour déboguer les méthodes d'exécution d'un objet personnalisé consiste à démarrer dtexec.exe à partir de Visual Studio après avoir généré votre objet personnalisé et éxécuté un package qui utilise le composant.
Si vous souhaitez déboguer les méthodes de conception du composant, telles que la méthode Validate, ouvrez un package qui utilise le composant dans une deuxième instance de Visual Studio et effectuez un attachement à son processus devenv.exe.
Si vous souhaitez également déboguer les méthodes d'exécution du composant lorsqu'un package est ouvert et en cours d'exécution dans le concepteur SSIS, vous devez forcer une pause dans l'exécution du package afin de pouvoir également effectuer un attachement au processus DtsDebugHost.exe.
Pour déboguer les méthodes d'exécution d'un objet à l'aide d'un attachement à dtexec.exe
Signez et générez votre projet dans la configuration de débogage, déployez-le et installez-le dans le Global Assembly Cache comme indiqué dans cette rubrique.
Sous l'onglet Déboguer des Propriétés du projet, sélectionnez Démarrer le programme externe en tant que Première action et localisez dtexec.exe, installé par défaut dans C:\Program Files\Microsoft SQL Server\100\DTS\Binn.
Dans la zone de texte Options de ligne de commande, sous Options de démarrage, entrez les arguments de ligne de commande requis pour exécuter un package qui utilise votre composant. Souvent, l'argument de ligne de commande sera consitué du commutateur /F[ILE] suivi du chemin d'accès et du nom du fichier .dtsx. Pour plus d'informations, consultez Utilitaire dtexec (outil SSIS).
Définissez des points d'arrêt dans le code source aux emplacements appropriés dans les méthodes d'exécution de votre composant.
Exécutez votre projet.
Pour déboguer les méthodes de conception d'un objet personnalisé via un attachement à Business Intelligence Development Studio
Signez et générez votre projet dans la configuration de débogage, déployez-le et installez-le dans le Global Assembly Cache comme indiqué dans cette rubrique.
Définissez des points d'arrêt dans le code source aux emplacements appropriés dans les méthodes de conception de votre objet personnalisé.
Ouvrez une deuxième instance de Visual Studio et chargez un projet Integration Services qui contient un package qui utilise l'objet personnalisé.
À partir de la première instance de Visual Studio, effectuez un attachement à la deuxième instance de devenv.exe dans laquelle le package est chargé en sélectionnant Attacher au processus dans le menu Déboguer de la première instance.
Exécutez le package à partir de la deuxième instance de Visual Studio.
Pour déboguer les méthodes d'exécution d'un objet personnalisé via un attachement à Business Intelligence Development Studio
Après avoir complété les étapes répertoriées dans la procédure précédente, forcez une pause dans l'exécution de votre package afin de pouvoir effectuer un attachement à DtsDebugHost.exe. Vous pouvez forcer cette pause en ajoutant un point d'arrêt à l'événement OnPreExecute ou en ajoutant une tâche de script à votre projet et en entrant un script qui affiche un message modal.
Exécutez le package. Lorsque la pause se produit, basculez vers l'instance de Visual Studio dans laquelle votre projet de code est ouvert et sélectionnez Attacher au processus dans le menu Déboguer. Assurez-vous d'effectuer l'attachement à l'instance de DtsDebugHost.exe répertoriée en tant que Managé, x86 dans la colonne Type, et non pas à l'instance répertoriée en tant que x86 uniquement.
Revenez au package en pause et passez le point d'arrêt, ou cliquez sur OK pour fermer le message déclenché par la tâche de script, puis continuez l'exécution et le débogage du package.
|