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

Изпълнение на един и същ SSIS пакет с различни параметри по различно време

Предизвикателството при използването на подход с конфигурационен файл е, че ще трябва постоянно да променяте файла. SSIS няма да презареди конфигурационния файл, след като стартира, така че е възможно да имате задачи от 20:05 и 20:35, които разменят конфигурационните файлове, но това ще стане объркващо и ще се счупи в даден момент.

Бих се справил с тази ситуация с променливи на командния ред (/set опция в dtexec ). Ако стартирахте пакета от командния ред, той би изглеждал нещо като dtexec.exe /file MyPackage.dtsx Дори ако използвате SQL Agent, зад кулисите той изгражда тези аргументи на командния ред.

Този подход предполага, че създавате две различни задачи (срещу 1 работа, планирана 2 пъти на ден). AgentMyPackage2011 има стъпка на работа на SSIS, която води до

  • dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2011\"

и AgentMyPackage2012 има стъпка на работа на SSIS, която води до

  • dtexec /file MyPackage.dtsx /Set \Package.Variables[User::Year].Properties[Value];\"2012\"

Чрез графичния интерфейс ще изглежда нещо като

Няма GUI или селектор за свойството, което искате да конфигурирате. Въпреки това, тъй като вече сте създали .dtsConfig файл за вашия пакет, отворете този файл и потърсете раздел като

<Configuration ConfiguredType="Property" Path="\Package.Variables[User::Year].Properties[Value]" ValueType="Int32">
<ConfiguredValue>2009</ConfiguredValue>

Файлът вече съдържа пътя до „нещото“, което се опитвате да конфигурирате, така че го вкарайте във вашата извикваща програма и след това изключете частта за годината от конфигурацията на пакета.

И накрая, връзка към SSIS Configuration Precedence тъй като има разлики в модела от 2005 г. срещу 2008 г. Виждам, че сте посочили 2008 в билета си, но за бъдещи читатели, ако използвате както /SET, така и източник на конфигурация (xml, sql сървър, регистър, променлива на средата), редът на операциите варира между версиите.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използвайте TYPE_ID(), за да получите идентификатора на тип данни в SQL Server

  2. Вземете списък на поддържаните часови зони в SQL Server (T-SQL)

  3. Взимате последния последен ред само с един избор в SQL Server?

  4. защо вмъкването на ред над 8053 байта не дава грешка, когато трябва, защото максимално допустимото ограничение за ред е 8060

  5. Стартирайте Python Script от MSSQL