Af: Koen Verbeeck | Opdateret: 076606B: Koen Verbeeck 2018-07-31 | Kommentarer (13) | Relateret: Mere > Udvikling af Integration Services

Problem

SQL Server Data Tools (SSDT) er udviklingsmiljøet til oprettelse og vedligeholdelse af Integration Services (SSIS)-pakker og -projekter. Historisk set var der ingen bagudkompatibilitet, hvilket betød, at du med en nyere version af SSDT ikke kunne oprette SSIS-pakker til en ældre version af SSDT. Siden SQL Server 2016-udgaven har SQL Server Data Tools understøttet bagudkompatibilitet op til SQL Server 2012. Dennetip forklarer den nye funktion.

Løsning

Indledning

Historisk set havde hver udgave af SQL Server en ledsagende udgave af et udviklingsmiljø til forretningsintelligens. Dette var altid enten et sæt skabeloner, der blev installeret i Visual Studio, eller, hvis Visual Studio ikke allerede var til stede, en skal af Visual Studio, der kun kunne håndtere BI-projekter. Med dette værktøj kunne man udvikle Integration Services-, Analysis Services- og Reporting Services-projekter.Oprindeligt hed dette værktøj Business Intelligence Development Studio eller BIDS.I SQL Server 2012 blev det omdøbt til SQL Server Data Tools. Microsoft havde dog også et andet produkt kaldet SQL Server Data Tools; med dette værktøj kunne du oprette og administrere SQL Server-databaseprojekter. BI-værktøjet var tilgængeligt påSQL Server-installationsmediet, mens databaseværktøjet var et separat (og gratis)download. Da dette skabte en del forvirring, blev SSDT omdøbt til SQL ServerData Tools for Business Intelligence eller SSDT-BI. Siden SQL Server 2016 er BI-værktøjerne nu koblet sammen med databaseværktøjet, og hele værktøjssættet hedder nuSQL Server Data Tools eller SSDT. Et overblik:

  • SQL Server 2005 – Visual Studio 2005 (BIDS)
  • SQL Server 2008 og 2008R2 – Visual Studio 2008 (BIDS)
  • SQL Server 2012 – Visual Studio 2010 (SSDT, tilgængelig på SQL Server-installationsmediet) eller Visual Studio 2012 (SSDT-BI, tilgængelig som separat download)
  • SQL Server 2014 – Visual Studio 2013 (SSDT-BI, tilgængelig som en separat download)
  • SQL Server 2016 – Visual Studio 2015 (SSDT, tilgængelig som en separat downloadog indeholder også databaseprojekter)
  • SQL Server 2017 – Visual Studio 2015 eller Visual Studio 2017 (SSDT)

Problemet her var, at SSIS ikke havde nogen understøttelse af bagudkompatibilitet.Hvis du f.eks. ønskede at udvikle pakker til SQL Server 2008, skulle du bruge VisualStudio 2008. Hvis du ønskede at udvikle til SQL Server 2014, havde du brug for Visual Studio2013. Med Visual Studio 2013 kunne du ikke udvikle SSIS-projekter til SQL Server2008 eller nogen anden version af SQL Server end SQL Server 2014. Det betød, at hvis du arbejdede med flere versioner af SSIS, endte du med at have mange forskellige versioner af Visual Studio på din udviklingsmaskine.

De seneste udgaver af SSDT (siden SQL Server 2016) løser disse problemer: ved at indføre bagudkompatibilitet kan du bruge en enkelt version af SSDT til at udvikle og vedligeholde versioner af SSIS-projekter fra 2012 til 2017 og senere. Det er vigtigt at bemærke, at SSAS og SSRS har understøttet bagudkompatibilitet i et stykke tid nu.

SSIS og bagudkompatibilitet

Resten af dette tip er skrevet ved hjælp af Visual Studio 2015 SSDT-udgaven sammen med SQL Server 2016. Alle de råd, der gives i dette tip, gælder også for senere versioner.

Først skal vi installere den nyeste version af Visual Studio 2015SSDT preview-udgaven af Visual Studio 2015SSDT. Når du åbner SQL Server 2016-installationsmediet, kan du finde et link til download-siden. Den indeholder også et link til download-siden for SQL Server Management Studio (SSMS), da dette nu også er en separat download.

Opretning af et nyt projekt

Når du tilføjer et nyt projekt, kan du se, at det nu er muligt at oprette databaseprojekter og BI-projekter også i SSDT.

I projektegenskaberne kan du indstille den SSIS-målversion, som SSDT vil bruge for dette projekt.

Målversionen er som standard SQL Server 2016 (i senere versioner af SSIS vil det være den nyeste version af SQL Server). SQL Server 2014 og SQL Server 2012 understøttes også, mens ældre versioner (2005 og 2008) ikke understøttes. Hvis du har ældre projekter end SQL Server 2012, skal du først opgradere dem, før du kan bruge den nyeste SSDT-version.

Når målversionen er indstillet, vil SSIS-værktøjskassen tilpasse sig i overensstemmelse hermed. For eksempel er der i SQL Server 2016 nye Hadoop-opgaver tilgængelige, og du kan downloadeAzure-opgaver fraAzure-funktionspakken.

Når du indstiller versionen til SQL Server 2014, vil alle disse nye opgaver forsvinde fra SSIS-værktøjskassen. Det samme gælder for dataflowtransformationer, der er indført i SQL Server 2016.

Når du ændrer versionen af et projekt, får du en advarsel om, at eksisterende pakker kan blive ændret:

Hvis du bruger SQL Server 2016-funktionalitet, får du dog en fejl efter at have indstillet målversionen til en tidligere version, når du åbner pakken:

Pakken åbnes stadig, men ulovlige opgaver, transformationer eller connectionmanagers forsvinder muligvis, eller du er ikke i stand til at åbne en editor. Det er muligt, at det ikke løser problemet at skifte tilbage til SQL Server 2016: objektet kan stadig være ødelagt. I så fald er der ingen anden mulighed end at fjerne objektet og tilføje det igen.

I skrivende stund findes der et par fejl, når der skiftes mellem målversioner. Du kan finde en liste på MSDN-blogindlæggetWhat’s New for SSIS 2016 RC0? Det er muligt, at nogle af dem allerede er rettet, når du læser dette.

Når du har dine egne brugerdefinerede komponenter i SSIS, skal du tage nogle ekstra skridt for at få dem til at fungere med egenskaben målversion. SQL Server MVP Joost vanRossum forklarer, hvordan du kan gøre dette i sit blogindlægSwitching Target Server Versions for custom components.

Tilføjelse af eksisterende pakker til projektet

Når du tilføjer en eksisterende SSIS-pakke fra en tidligere version til projektet – f.eks. en SSIS 2012-pakke til et 2016-projekt – opgraderes pakken for at matche målversionen.

Når versionerne passer sammen, finder der naturligvis ingen opgradering sted, pakken tilføjes direkte til projektet. Du kan også tilføje pakker fra en højere version til projektet,SSIS vil forsøge at nedgradere dem.

Test viser dog, at du ikke altid kan stole på denne meddelelse. Selv med en succesmeddelelse kan pakken gå i stykker, hvis du kun bruger SQL Server 2016-komponenter.

Åbning af et eksisterende projekt

Når du bruger SSDT 2015 til at åbne et projekt, der er oprettet med en tidligere version af SSDT, vil opgraderingsguiden automatisk blive sat i gang. Det betyder, at alle pakker opgraderes til SQL Server 2016.

Selv om du stadig kan nedgradere projektet tilbage til den tidligere version, er det måske noget, du ikke ønsker at gennemgå opgraderingsprocessen. Som et alternativ kan du redigere projektfilen og tilføje følgende linje:

Dette vil få SSDT 2015 til at springe opgraderingsguiden over og åbne projektet direkte med den korrekte målversion. For SQL Server 2014 ændrer du selvfølgelig SQLServer2012til SQLServer2014. Selv om dette work around ser ud til at virke, er manuel redigering af XML i projektfilen ikke rigtig understøttet. Mit råd er at oprette et nyt tomt projekt, indstille målversionen og derefter begynde at tilføje pakker.

Control Flow Parts

Control Flow Parts introduceres i tippetSQL Server Integration Services 2016 Control Flow Templates Introduction (de er blevet omdøbt fra templates til parts). Overraskende nok kan du stadig arbejde med kontrolflowdele, hvis din målversion ikke er SQL Server2016. Det er muligt, fordi de er en designtidsfunktion, og de har ingen indflydelse på, hvordan pakker rent faktisk fungerer. I eksemplet her har jeg oprettet et nyt projekt med målversionen indstillet til SQL Server 2014. Jeg oprettede en simpel kontrolflowdelog tilføjede den til pakken.

Debugging af pakken er ikke et problem.

Og du kan også køre pakken inde i et SQL Server 2014 SSIS Catalog:

Konklusion

Egenskaben Target Server Version introducerer bagudkompatibilitetfor SSIS-projekt i SSDT 2015. Med denne nye mulighed er et gammelt problem i SSIS endelig blevet løst: du kan kun bruge én enkelt version af Visual Studio til at administrere dine forskellige SSIS-projekter. Det anbefales at indstille serverversionen ved projektets start, og at du ikke skifter den for ofte, da det kan føre til problemer.Den gode nyhed er, at du med SSDT 2015 og senere også kan bruge kontrolflowdele i dine ældre projekter!

Næste skridt
  • For mere information om de forskellige versioner af SQL Server Data Tools:
    • TheSSDT Evolution
    • SQL 2014 CTP1, hvor er min BIDS?
  • For flere oplysninger om Control Flow-dele kan du læse tippetSQL Server Integration Services 2016 Control Flow Templates Introduction.
  • For flere SQL Server 2016-tips kan du bruge denneoversigt.

Sidst opdateret: 2018-07-31

Om forfatteren
Koen Verbeeck er BI-professionel med speciale i Microsoft BI-stakken med en særlig forkærlighed for SSIS.
Se alle mine tips
Relaterede ressourcer

  • Mere Business Intelligence-tips…

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.