Par : Koen Verbeeck | Mis à jour : 2018-07-31 | Commentaires (13) | Connexe : Plus > Développement des services d’intégration

Problème

SQL Server Data Tools (SSDT) est l’environnement de développement pour la création et la maintenance des packages et des projets de services d’intégration (SSIS). Historiquement, il n’y avait pas de compatibilité ascendante, ce qui signifie qu’avec une version plus récente de SSDT, vous ne pouviez pas créer de packages SSIS pour une version plus ancienne de SSDT. Depuis la version SQL Server 2016,SQL Server Data Tools prend en charge la rétrocompatibilité jusqu’à SQL Server 2012. Cette astuce explique cette nouvelle fonctionnalité.

Solution

Introduction

Historiquement, chaque version de SQL Server était accompagnée d’une version d’un environnement de développement de businessintelligence. Il s’agissait toujours soit d’un ensemble de modèlesinstallés dans Visual Studio, soit, si Visual Studio n’était pas déjà présent, d’un shellof de Visual Studio uniquement capable de gérer des projets de BI. Avec cet outil, vous pouviez développer des projets Integration Services, Analysis Services et Reporting Services.Initialement, cet outil était appelé Business Intelligence Development Studio ou BIDS.Dans SQL Server 2012, il a été renommé SQL Server Data Tools. Cependant, Microsof avait également un autre produit appelé SQL Server Data Tools ; avec cet outil, vous pouviez créer et gérer des projets de bases de données SQL Server. L’outil de BI était disponible sur le support d’installation de SQL Server, tandis que l’outil de base de données était un téléchargement séparé (et gratuit). En raison d’une certaine confusion, SSDT a été renommé SQL ServerData Tools for Business Intelligence ou SSDT-BI. Depuis SQL Server 2016, les outils de BI sont désormais couplés à l’outil de base de données et l’ensemble des outils s’appelle désormais SQL Server Data Tools ou SSDT. Un aperçu :

  • SQL Server 2005 – Visual Studio 2005 (BIDS)
  • SQL Server 2008 et 2008R2 – Visual Studio 2008 (BIDS)
  • SQL Server 2012 – Visual Studio 2010 (SSDT, disponible sur le support d’installation de SQL Server) ou Visual Studio 2012 (SSDT-BI, disponible en téléchargement séparé)
  • SQL Server 2014 – Visual Studio 2013 (SSDT-BI, disponible en téléchargement séparé)
  • SQL Server 2016 – Visual Studio 2015 (SSDT, disponible en téléchargement séparéet intègre également des projets de base de données)
  • SQL Server 2017 – Visual Studio 2015 ou Visual Studio 2017 (SSDT)

Le problème ici était que SSIS ne disposait d’aucune prise en charge de la rétrocompatibilité.Par exemple, si vous vouliez développer des packages pour SQL Server 2008, vous aviez besoin de VisualStudio 2008. Si vous vouliez développer pour SQL Server 2014, vous aviez besoin de Visual Studio2013. Avec Visual Studio 2013, vous ne pouviez pas développer de projets SSIS pour SQL Server2008 ou toute autre version de SQL Server, à l’exception de SQL Server 2014. Cela signifie que si vous travailliez avec plusieurs versions de SSIS, vous vous retrouviez avec de nombreuses versions différentes de Visual Studio sur votre machine de développement.

Les dernières versions de SSDT (depuis SQL Server 2016) résolvent ces problèmes : en introduisant une rétrocompatibilité, vous pouvez utiliser une seule version de SSDT pour développer et maintenir des versions de projets SSIS de 2012 jusqu’à 2017 et plus. Il est important de noter que SSAS et SSRS prennent en charge la rétrocompatibilité depuis un certain temps déjà.

SSIS et la rétrocompatibilité

Le reste de cette astuce a été rédigé en utilisant la version SSDT de Visual Studio 2015,ainsi que SQL Server 2016. Tous les conseils donnés dans cette astuce sont également valables pour les versions ultérieures.

Tout d’abord, nous devons installer la dernière version de l’aperçu de Visual Studio 2015SSDT. Lorsque vous ouvrez le support d’installation de SQL Server 2016, vous pouvez trouver un lien vers la page de téléchargement. Il contient également un lien vers la page de téléchargement de SQL Server Management Studio (SSMS), puisque c’est maintenant aussi un téléchargement séparé.

Création d’un nouveau projet

Lorsque vous ajoutez un nouveau projet, vous pouvez voir qu’il est maintenant possible de créer des projets de base de données et des projets de BI aussi bien dans SSDT.

Dans les propriétés du projet, vous pouvez définir la version SSIS cible que SSDT utilisera pour ce projet.

La version cible par défaut est SQL Server 2016 (dans les versions ultérieures de SSIS, ce sera la version la plus récente de SQL Server). SQL Server 2014 et SQL Server 2012 sont également pris en charge, tandis que les versions plus anciennes (2005 et 2008) ne le sont pas. Si vous avez des projets plus anciens que SQL Server 2012, vous devrez d’abord les mettre à niveau avant de pouvoir utiliser la dernière version de SSDT.

Une fois la version cible définie, la boîte à outils SSIS s’adapte en conséquence. Forexample, dans SQL Server 2016, de nouvelles tâches Hadoop sont disponibles et vous pouvez télécharger des tâchesAzure à partir du pack de fonctionnalitésAzure.

Lorsque l’on définit la version à SQL Server 2014, toutes ces nouvelles tâches disparaîtront de la boîte à outils SSIS. Il en va de même pour les transformations de flux de données introduites dans SQL Server 2016.

Lorsque vous changez la version d’un projet, vous obtiendrez un avertissement indiquant que les packages existants pourraient être modifiés :

Si vous utilisez la fonctionnalité SQL Server 2016 cependant, vous obtiendrez une erreur après avoir défini la version cible sur une version antérieure lors de l’ouverture du package :

Le paquet s’ouvrira quand même, mais les tâches, transformations ou gestionnaires de connexion incriminés pourraient disparaître, ou vous ne pourrez pas ouvrir un éditeur. Il est possible que le fait de repasser à SQL Server 2016 ne résolve pas le problème : l’objet peut toujours être cassé. Dans ce cas, il n’y a pas d’autre option que de supprimer l’objet et de le rajouter à nouveau.

Au moment de la rédaction, quelques bogues existent lors du passage d’une version cible à une autre. Vous pouvez en trouver une liste sur l’article du blog MSDNWhat’s New for SSIS 2016 RC0…. Il est possible que certains d’entre eux soient déjà corrigésau moment où vous lisez ceci.

Lorsque vous avez vos propres composants personnalisés dans SSIS, vous devez prendre quelques mesures supplémentaires pour les faire fonctionner avec la propriété de la version cible. Joost vanRossum, MVP SQL Server, explique comment vous pouvez le faire dans son article de blogSwitching Target Server Versions for custom components.

Ajout de packages existants au projet

Lorsque vous ajoutez un package SSIS existant d’une version antérieure au projet – par exemple un package SSIS 2012 à un projet 2016 – le package sera mis à niveau pour correspondre à la version cible.

Lorsque les versions correspondent, aucune mise à niveau n’a lieu bien sûr, le package est directement ajouté au projet. Vous pouvez également ajouter des packages d’une version supérieure au projet,SSIS essaiera de les rétrograder.

Les tests montrent cependant que vous ne pouvez pas toujours faire confiance à ce message. Même avec un successmessage, le package peut être cassé si vous utilisez des composants SQL Server 2016 uniquement.

Ouvrir un projet existant

Lorsque vous utilisez SSDT 2015 pour ouvrir un projet créé avec une version antérieure de SSDT,l’assistant de mise à niveau se déclenche automatiquement. Cela signifie que tous les paquets sontmises à niveau vers SQL Server 2016.

Bien que vous puissiez toujours rétrograder le projet à la version antérieure, passer par le processus de mise à niveau est peut-être quelque chose que vous ne voulez pas. Comme alternative, vous pouvez éditer le fichier du projet et ajouter la ligne suivante:

Ceci fera en sorte que SSDT 2015 saute l’assistant de mise à niveau et ouvre directement le projet avec la version cible correcte. Pour SQL Server 2014, vous changez SQLServer2012en SQLServer2014 bien sûr. Bien que cette solution semble fonctionner, la modification manuelle du XML du fichier de projet n’est pas vraiment prise en charge. Mon conseil est de créer un nouveau projet vide, de définir la version cible, puis de commencer à ajouter des packages.

Parties de flux de contrôle

Les parties de flux de contrôle sont présentées dans le conseilSQL Server Integration Services 2016 Control Flow Templates Introduction (elles ont été renommées de modèles à parties). Étonnamment, vous pouvez toujours travailler avec les parties de flux de contrôle si votre version cible n’est pas SQL Server2016. Cela est possible parce qu’il s’agit d’une fonctionnalité de conception et qu’elle n’influence pas le fonctionnement réel des packages. Dans l’exemple ci-dessous, j’ai créé un nouveau projet dont la version cible est SQL Server 2014. J’ai créé une partie de flux de contrôle simple et je l’ai ajoutée au package.

Le débogage du package n’est pas un problème.

Et vous pouvez également exécuter le package à l’intérieur d’un catalogue SSIS de SQL Server 2014 :

Conclusion

La propriété Target Server Version introduit une compatibilité ascendantepour le projet SSIS dans SSDT 2015. Avec cette nouvelle capacité, une vieille plaie de SSIS a finalement été corrigée : vous ne pouvez utiliser qu’une seule version de Visual Studio pour gérer vosdifférents projets SSIS. Il est recommandé de définir la version du serveur au début du projet et de ne pas la changer trop souvent, car cela peut entraîner des problèmes.La bonne nouvelle est qu’avec SSDT 2015 et les versions ultérieures, vous pouvez également utiliser des parties de flux de contrôle dans vos anciens projets!

Prochaines étapes
  • Pour plus d’informations sur les différentes versions de SQL Server Data Tools:
    • L’évolution de SSDT
    • SQL 2014 CTP1, où est mon BIDS ?
  • Pour plus d’informations sur les pièces de Control Flow, consultez l’astuceSQL Server Integration Services 2016 Control Flow Templates Introduction.
  • Pour plus d’astuces sur SQL Server 2016, vous pouvez utiliser cetoverview.

Dernière mise à jour : 2018-07-31

À propos de l’auteur
Koen Verbeeck est un professionnel de la BI, spécialisé dans la pile BI de Microsoft avec un amour particulier pour SSIS.
Voir tous mes conseils
Ressources connexes

  • Plus de conseils en matière de Business Intelligence…

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.