sql >> Databasteknik >  >> RDS >> Sqlserver

Hur ändrar man variabeln i SSIS?

Som @Yuck och @devarc har noterat finns det två olika och distinkta värden en Variabel håller. Värdet Design-time är det värde du tilldelar när variabeln skapas första gången. I ditt fall har variabeln C:\Test.txt som designtidsvärde. Varje gång du öppnar paketet visar det C:\Test.txt tills du ändrar det i

För att ändra värdet på en variabel medan paketet körs är dina alternativ antingen att ställa in värdet eller beräkna det. Här har jag skapat en variabel på paketnivå CurrentFile med värdet C:\Test.txt

En sak som ofta skrämmer folk är att de har ändrat körtidsvärdet korrekt men när de kör det i BIDS ser de det "gamla" värdet. Värdet som visas i fönstret Variabler ändras inte under paketkörning.

Under paketkörning visar mitt Variables-fönster fortfarande designtidsvärdet (C:\Test.txt) men det sanna värdet återspeglas i Locals-fönstret (C:\Test2.txt)

Ange ett värde

Värdet av det mesta i SSIS kan fastställas under körning genom en uppsättning utförliga alternativ för kommandorad eller genom konfiguration källor. Den största skillnaden i mina ögon är att detta tillvägagångssätt är att värdet alltid kommer att vara värdet under hela livstiden för paketexekveringen. Sekventiella eller parallella anrop av ett paket kan ändra det värdet förutom det exekvering skulle värdet förbli konstant (förutom en explicit ändring av värdet.

/SET

Kommandoradsexekvering (dtexec.exe), högerklicka på ett paket och köra från filsystemet (dtexecUI.exe) eller skapa ett SQL Agent-jobbsteg för SQL Server Integration Services möjliggör alla att tillhandahålla ett körtidsvärde genom kommandot SET . Med hjälp av variabeln ovan skulle följande kommando ställa in körtidsvärdet till C:\Test2.txt

dtexec /file C:\Generated.dtsx /set \Package.Variables[User::CurrentFile].Properties[Value];"C:\Test2.txt"

Konfiguration

SSIS erbjuder ett alternativ för att skapa konfigurationskällor för att tillhandahålla körtidsvärden till paket. Artikeln jag länkade till ovan gör ett mycket bättre jobb med att beskriva för- och nackdelarna med konfigurationsalternativen än vad jag kommer att göra här. Jag kommer att säga att jag vanligtvis använder båda - mitt SET-kommando konfigurerar en anslutningshanterare som sedan används av paketet för att hitta den "fullständiga" uppsättningen av paketkonfigurationer.

Beräkna ett värde

Det finns en mängd olika uppgifter i SSIS som kan ändra värdet på en variabel såväl som användningen av uttryck för att ändra ett värde. Jag ser dessa som saker som fungerar på värde medan paketet är på väg.

Uppgifter

En skriptuppgift är en av de mest använda mekanismerna för de som börjar, men jag tycker att andra verktyg i SSIS-verktygslådan vanligtvis är bättre lämpade för att ändra variabelvärden.

Foreach Loop Container och Kör SQL-uppgift är två av de andra stora uppgifterna du bör titta på för tilldelning av ett variabelvärde.

Uttryck

Expressions är det mest härliga godiset i SSIS-verktygslådan. Nästan varje "sak" i SSIS exponerar egenskaper för konfiguration. Det är användbart, men att använda tilldela ett uttryck för att bygga dessa egenskaper är enastående.

Tänk dig till exempel tre variabler RootFolder , FileName och ComputedCurrentFile med värdena C:\, File2.txt och tom sträng. I fönstret Egenskaper för ComputedCurrentFile vi skulle ändra värdet för EvaluateAsExpression från False till True och sedan använda ett uttryck som @[User::RootFolder]+ "\\" [email protected][User::FileName] Det sammanfogar helt enkelt värdet de två första variablerna tillsammans. Detta kan vara användbart om filnamnet för bearbetning var standard men källmappen ändrades ofta. Eller om vi pratar om utdata, är det vanligt att använda uttryck för att bygga ett utdatafilnamn med hjälp av datum och eventuellt tid för när paketet körs.

Slutligen finns det inget som hindrar en blandning och matchning av dessa tillvägagångssätt. Jag använder vanligtvis en konfiguration för att peka en filuppräkning på rätt startmapp och använder sedan beräknade värden för att identifiera den aktuella filen för bearbetning.



  1. Oracles unika begränsning och unika index

  2. Exportera SQLite-databas till XML-fil

  3. Beräkna decil i MySQL baserat på totaler

  4. Jämföra datalager för PostgreSQL - MVCC vs InnoDB