Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да модифицирам променливата в SSIS?

Както отбелязаха @Yuck и @devarc, има две различни и отделни стойности a Променлива държи. Стойността по време на проектиране е стойността, която задавате при първото създаване на променливата. Във вашия случай променливата съдържа C:\Test.txt като стойност по време на проектиране. Всеки път, когато отворите пакета, той ще показва C:\Test.txt, докато не го промените в

За да промените стойността на променлива, докато пакетът работи, вашите опции са или да зададете стойността, или да я изчислите. Тук създадох променлива на ниво пакет CurrentFile със стойността на C:\Test.txt

Едно нещо, което често спъва хората е, че те правилно са променили стойността по време на изпълнение, но когато я пуснат в BIDS, виждат „старата“ стойност. Стойността, показана в прозореца с променливи, не се променя по време на изпълнение на пакета.

По време на изпълнението на пакета моят прозорец с променливи все още показва стойността за времето на проектиране (C:\Test.txt), но истинската стойност се отразява в прозореца Locals (C:\Test2.txt)

Задаване на стойност

Стойността на повечето неща в SSIS може да бъде установена по време на изпълнение чрез набор от многословни опции на командния ред или чрез конфигурация източници. Най-голямата разлика според мен е, че този подход е, че стойността винаги ще бъде стойността за целия живот на изпълнението на пакета. Последователните или паралелни извиквания на пакет могат да променят тази стойност, но за това при изпълнение стойността ще остане постоянна (с изключение на изрична промяна на стойността.

/SET

Изпълнение от команден ред (dtexec.exe), щракване с десен бутон върху пакет и стартиране от файловата система (dtexecUI.exe) или създаване на стъпка на работа на SQL Agent на SQL Server Integration Services, всичко това позволява предоставянето на стойност по време на изпълнение чрез командата SET . Използвайки горната променлива, следната команда ще настрои стойността за време на изпълнение на C:\Test2.txt

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

Конфигурация

SSIS предлага опция за създаване на конфигурационни източници за предоставяне на стойности по време на изпълнение на пакети. Статията, към която дадох връзка по-горе, върши много по-добра работа, описвайки плюсовете и минусите на опциите за конфигурация, отколкото аз ще направя тук. Ще кажа, че обикновено използвам и двете - моята команда SET конфигурира мениджър на връзки, който след това се използва от пакета за намиране на "пълния" набор от конфигурации на пакета.

Изчисляване на стойност

Има различни задачи в SSIS, които могат да променят стойността на променлива, както и използването на изрази за промяна на стойност. Виждам това като неща, които работят със стойност, докато пакетът е в полет.

Задачи

Задачата за скрипт е един от най-често използваните механизми за тези, които започват, но намирам други инструменти в набора от инструменти на SSIS обикновено по-подходящи за промяна на стойностите на променливи.

Foreach Loop Container и Изпълнете SQL задача са две от другите големи задачи, които трябва да разгледате за присвояване на стойност на променлива.

Изрази

Изразите са най-великолепният бонбон в кутията с инструменти на SSIS. Почти всяко „нещо“ в SSIS излага свойства за конфигуриране. Това е полезно, но използването на присвояване на израз за изграждане на тези свойства е изключително.

Например, представете си 3 променливи RootFolder , FileName и ComputedCurrentFile със стойности на C:\, File2.txt и празен низ. В прозореца със свойства за ComputedCurrentFile ще променим стойността за EvaluateAsExpression от False на True и след това ще използваме израз като @[User::RootFolder]+ "\\" [email protected][User::FileName] Това просто свързва стойността на първите две променливи заедно. Това може да бъде полезно, ако името на файла за обработка е стандартно, но папката източник се променя често. Или ако говорим за изход, обичайно е да се използват изрази за създаване на име на изходен файл, използвайки датата и евентуално часа, когато пакетът се изпълнява.

И накрая, нищо не пречи на смесването и напасването на тези подходи. Обикновено използвам конфигурация, за да насоча файлов изброител към правилната начална папка и след това използвам изчислени стойности, за да идентифицирам текущия файл за обработка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получавам низови данни, грешки при отрязване на дясно от PHP, използвайки ODBC и свързвайки се с екземпляр на Microsoft SQL Server 2008R2

  2. Вземете ред, където колона дата и час =днес - SQL сървър noob

  3. sql актуализация с динамични имена на колони

  4. Pivots с динамични колони в SQL Server

  5. Заявка за динамично свързан сървър