Door: Koen Verbeeck | Bijgewerkt: 2018-07-31 | Comments (13) | Related: Meer > Integration Services Development

Probleem

SQL Server Data Tools (SSDT) is de ontwikkelomgeving voor het maken en onderhouden van Integration Services (SSIS) packages en projecten. Historisch gezien was er geen achterwaartse compatibiliteit, wat betekent dat u met een nieuwere versie van SSDT geen SSIS-pakketten kon maken voor een oudere versie van SSDT. Sinds de SQL Server 2016 release, ondersteunt SQL Server Data Tools achterwaartse compatibiliteit tot SQL Server 2012. In deze tip wordt de nieuwe functie uitgelegd.

Oplossing

Inleiding

Historisch gezien had elke release van SQL Server een begeleidende release van een businessintelligence ontwikkelomgeving. Dit was altijd ofwel een set van sjablonen geïnstalleerd in Visual Studio, of als Visual Studio nog niet aanwezig was, een shellof Visual Studio alleen geschikt voor het verwerken van BI-projecten. Met deze tool kon je Integration Services, Analysis Services en Reporting Services projecten ontwikkelen. Aanvankelijk heette deze tool Business Intelligence Development Studio of BIDS. In SQL Server 2012 werd de naam veranderd in SQL Server Data Tools. Microsofthad echter ook nog een ander product genaamd SQL Server Data Tools; met deze tool kon je SQL Server database projecten maken en beheren. De BI-tool was beschikbaar op de SQL Server installatiemedia, terwijl de databasetool een afzonderlijke (en gratis) download was. Omdat dit nogal wat verwarring veroorzaakte, werd SSDT omgedoopt tot SQL ServerData Tools for Business Intelligence of SSDT-BI. Sinds SQL Server 2016 zijn de BI-tools nu gekoppeld aan de databasetool en heet de hele toolset nu SQL Server Data Tools of SSDT. Een overzicht:

  • SQL Server 2005 – Visual Studio 2005 (BIDS)
  • SQL Server 2008 en 2008R2 – Visual Studio 2008 (BIDS)
  • SQL Server 2012 – Visual Studio 2010 (SSDT, beschikbaar op SQL Server installatiemedia) of Visual Studio 2012 (SSDT-BI, beschikbaar als aparte download)
  • SQL Server 2014 – Visual Studio 2013 (SSDT-BI, beschikbaar als aparte download)
  • SQL Server 2016 – Visual Studio 2015 (SSDT, beschikbaar als aparte downloaden bevat ook database projecten)
  • SQL Server 2017 – Visual Studio 2015 of Visual Studio 2017 (SSDT)

Het probleem hier was dat SSIS geen ondersteuning had voor achterwaartse compatibiliteit.Als je bijvoorbeeld pakketten wilde ontwikkelen voor SQL Server 2008, had je VisualStudio 2008 nodig. Als je wilde ontwikkelen voor SQL Server 2014, had je Visual Studio2013 nodig. Met Visual Studio 2013 kon u geen SSIS-projecten ontwikkelen voor SQL Server2008 of een andere versie van SQL Server, behalve voor SQL Server 2014. Dit betekende dat als u met verschillende versies van SSIS werkte, u uiteindelijk veel verschillende versies van Visual Studio op uw ontwikkelmachine had staan.

De laatste versies van SSDT (sinds SQL Server 2016) lossen deze problemen op: door de introductie van achterwaartse compatibiliteit kunt u één enkele versie van SSDT gebruiken voor het ontwikkelen en onderhouden van versies van SSIS-projecten van 2012 tot 2017 en later. Het is belangrijk om op te merken dat SSAS en SSRS al geruime tijd achterwaartse compatibiliteit ondersteunen.

SSIS en achterwaartse compatibiliteit

De rest van deze tip is geschreven met behulp van de Visual Studio 2015 SSDT-release,samen met SQL Server 2016. Alle adviezen die in deze tip worden gegeven, gelden ook voor latere versies.

Allereerst moeten we de laatste versie van de Visual Studio 2015SSDT preview release installeren. Wanneer u de SQL Server 2016 installatiemedia opent, vindt u een link naar de downloadpagina. Deze bevat ook een link naar de downloadpagina van SQL Server Management Studio (SSMS), aangezien dit nu ook een aparte download is.

Een nieuw project maken

Wanneer u een nieuw project toevoegt, ziet u dat het nu mogelijk is om ook databaseprojecten en BI-projecten aan te maken in SSDT.

In de projecteigenschappen kunt u de doelversie van SSIS instellen die SSDT voor dit project zal gebruiken.

De standaard doelversie is SQL Server 2016 (in latere versies van SSIS zal dat de meest recente versie van SQL Server zijn). SQL Server 2014 en SQL Server 2012 worden ook ondersteund, terwijl oudere versies (2005 en 2008) dat niet zijn. Als u oudere projecten heeft dan SQL Server 2012, zult u deze eerst moeten upgraden voordat u de laatste SSDT versie kunt gebruiken.

Als de doelversie eenmaal is ingesteld, zal de SSIS toolbox zich hieraan aanpassen. In SQL Server 2016 zijn er bijvoorbeeld nieuwe Hadoop-taken beschikbaar en kunt u Azure-taken downloaden uit het Azure-feature pack.

Wanneer u de versie instelt op SQL Server 2014, verdwijnen al deze nieuwe taken uit de SSIS-toolbox. Hetzelfde geldt voor datastroomtransformaties die in SQL Server 2016 zijn geïntroduceerd.

Wanneer u de versie van een project wijzigt, krijgt u een waarschuwing dat bestaande pakketten mogelijk worden gewijzigd:

Als u echter SQL Server 2016-functionaliteit gebruikt, krijgt u een foutmelding nadat u de doelversie op een eerdere versie hebt ingesteld bij het openen van het pakket:

Het pakket wordt nog wel geopend, maar de taken, transformaties of connectionmanagers die de fout veroorzaken, kunnen verdwijnen, of u kunt geen editor openen. Het is mogelijk dat terugschakelen naar SQL Server 2016 het probleem niet oplost: het object kan nog steeds kapot zijn. In dat geval is er geen andere optie dan het object te verwijderen en opnieuw toe te voegen.

Op het moment van schrijven bestaan er een paar bugs bij het schakelen tussen doelversies. U kunt een lijst vinden op de MSDN blog postWhat’s New for SSIS 2016 RC0? Het is mogelijk dat sommige van deze bugs al zijn opgelost wanneer u dit leest.

Wanneer u uw eigen aangepaste componenten in SSIS heeft, moet u een aantal extra stappen nemen om ze te laten werken met de target version property. SQL Server MVP Joost vanRossum legt uit hoe u dit kunt doen in zijn blogpostSwitching Target Server Versions for custom components.

Toevoegen van bestaande pakketten aan het project

Wanneer u een bestaand SSIS-pakket van een eerdere versie toevoegt aan het project – bijvoorbeeld een SSIS 2012-pakket aan een 2016-project – wordt het pakket geüpgraded om overeen te komen met de doelversie.

Wanneer de versies overeenkomen, vindt er natuurlijk geen upgrade plaats, maar wordt het pakket rechtstreeks aan het project toegevoegd. U kunt ook pakketten van een hogere versie aan het project toevoegen, SSIS zal dan proberen deze te downgraden.

Tests wijzen echter uit dat u niet altijd op deze melding kunt vertrouwen. Zelfs met een succesmelding kan het pakket worden afgebroken als u alleen SQL Server 2016-componenten gebruikt.

Een bestaand project openen

Wanneer u SSDT 2015 gebruikt om een project te openen dat is gemaakt met een eerdere versie van SSDT, zal de upgradewizard automatisch worden gestart. Dit betekent dat alle pakketten worden geüpgraded naar SQL Server 2016.

Hoewel u het project nog steeds kunt downgraden naar de eerdere versie, is het doorlopen van het upgradeproces misschien iets wat u niet wilt. Als alternatief kunt u het projectbestand bewerken en de volgende regel toevoegen:

Dit zorgt ervoor dat SSDT 2015 de upgrade wizard overslaat en het project direct opent met de juiste doelversie. Voor SQL Server 2014, verandert u SQLServer2012 in SQLServer2014 natuurlijk. Hoewel deze work around lijkt te werken, wordt het handmatig bewerken van de XML van het projectbestand niet echt ondersteund. Mijn advies is om een nieuw leeg project aan te maken, de doelversie in te stellen en dan te beginnen met het toevoegen van packages.

Control Flow Parts

Control flow parts zijn geïntroduceerd in de tipSQL Server Integration Services 2016 Control Flow Templates Introduction (ze zijn hernoemd van templates naar parts). Verrassend genoeg kunt u nog steeds werken met control flow parts als uw doelversie niet SQL Server2016 is. Dit is mogelijk omdat ze een design-time feature zijn en ze geen invloed hebben op hoe packages eigenlijk werken. In het voorbeeld hier heb ik een nieuw project gemaakt met de doelversie ingesteld op SQL Server 2014. Ik heb een eenvoudig control flow-onderdeel gemaakt en aan het pakket toegevoegd.

Het debuggen van het pakket is geen probleem.

En u kunt het pakket ook uitvoeren in een SQL Server 2014 SSIS-catalogus:

Conclusie

De eigenschap Target Server Version introduceert achterwaartse compatibiliteit voor SSIS-projecten in SSDT 2015. Met deze nieuwe mogelijkheid is een oude fout van SSIS eindelijk verholpen: u kunt slechts één versie van Visual Studio gebruiken om uw verschillende SSIS-projecten te beheren. Het is aan te raden om de server versie aan het begin van het project in te stellen en deze niet te vaak om te wisselen omdat dit tot problemen kan leiden.Het goede nieuws is dat u met SSDT 2015 en later ook control flow parts kunt gebruiken in uw oudere projecten!

Volgende Stappen
  • Voor meer informatie over de verschillende versies van SQL Server Data Tools:
    • DeSSDT Evolutie
    • SQL 2014 CTP1, waar is mijn BIDS?
  • Voor meer informatie over Control Flow onderdelen, bekijk de tipSQL Server Integration Services 2016 Control Flow Templates Introductie.
  • Voor meer SQL Server 2016 tips, kunt u dezeoverview gebruiken.

Laatst bijgewerkt: 2018-07-31

Over de auteur
Koen Verbeeck is een BI-professional, gespecialiseerd in de Microsoft BI-stack met een bijzondere liefde voor SSIS.
Bekijk al mijn tips
Verdere bronnen

  • Meer Business Intelligence Tips…

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.