Выражения SSIS, устанавливающие две переменные

Я пытаюсь использовать «Задачу выражения» в SSIS, чтобы просто инициализировать/установить две переменные. Эта, казалось бы, простая задача свела меня с ума, потому что я не знаю, как разделить операторы:

@[User::testVariable]="1"  
@[User::testVar2]=3

Это дает ошибку синтаксического анализа, и я безрезультатно прочитал довольно много документации. Как разделены операторы, и я надеюсь, что мне не придется использовать более одной задачи выражения, потому что у меня много переменных... Спасибо


person LearnByReading    schedule 12.06.2015    source источник
comment
Если вам нужно установить много переменных, я бы использовал задачу сценария.   -  person Tab Alleman    schedule 12.06.2015
comment
Спасибо за комментарий: но это не одно и то же. Для задачи сценария у вас нет возможности параметризации задачи, поэтому она является статической. Я назначаю свои переменные параметрам, поэтому мне нужно иметь возможность настраивать их на уровне SSIS.   -  person LearnByReading    schedule 12.06.2015
comment
Не уверен, что вы подразумеваете под параметризацией задачи ... вы имеете в виду, что вы не можете делать то, что они говорят вам, как делать в этом ответе на форуме?: social.msdn.microsoft.com/ форумы/sqlserver/en-US/   -  person Tab Alleman    schedule 12.06.2015
comment
черт, лол, вы же МОГУТ установить параметры в Script Task в конце концов! (Я предполагаю, основываясь на кратком прочтении этого). Не могли бы вы поделиться одной строкой о том, как бы вы написали оператор, который устанавливает VariableA со значением в ParameterA ??? Вы можете добавить это как ответ, если хотите   -  person LearnByReading    schedule 12.06.2015
comment
Ну, я никогда не делал этого сам, но по ссылке, которую я упомянул, похоже, что это будет: Dts.Variables("User::VariableA").Value = Dts.Variables("$Project::ParameterA").Value   -  person Tab Alleman    schedule 12.06.2015


Ответы (2)


Вы можете установить только 1 переменную за раз:

Чтобы изменить значение переменной во время выполнения, вам нужно выражение или задача сценария. Выражение не очень гибкое, а задача сценария требует знания .Net. Вот почему Microsoft представила задачу выражения в SSIS 2012. Она позволяет вам установить значение одной переменной во время выполнения. Недостаток в том, что он недоступен для версии 2008, и вы можете задавать только одну переменную за раз.

http://microsoft-ssis.blogspot.com/2013/07/custom-ssis-component-multiple.html

Вам нужно будет загрузить настроенный компонент Multiple Expressions Task, который предоставляется по ссылке, или выполнить Expression Task для каждой переменной.

person J.S. Orris    schedule 12.06.2015
comment
Не могу поверить, что я так долго выбирал этот лучший ответ, хотя он помог мне и многим другим. - person LearnByReading; 08.10.2015

Что-то, что я начал делать недавно, что может быть полезно для людей:

Вместо того, чтобы утруждать себя настройкой нескольких задач Expression или задачи Script, я понял, что часто можно использовать задачу Execute SQL для выполнения работы. Необходимый SQL может немного отличаться в зависимости от того, к какой базе данных вы подключаетесь, мой пример основан на SQL Server.

Мой пример основан на инициализации переменных из параметров, но это можно настроить для разных ситуаций.

Шаг 1

Создайте запрос, который принимает параметры — это параметры или переменные, из которых вам нужны значения. Конечно, вы можете использовать это, чтобы инициализировать переменную до 0 или выполнить некоторые арифметические действия с парой параметров или переменных.

Используйте параметр Одна строка для параметра Набор результатов.

Вкладка

Шаг 2

Настройте сопоставление параметров как обычно.

Вкладка сопоставления параметров

Шаг 3

Настройте набор результатов.

Вкладка


Я предполагаю, что недостатком этого является то, что для этого вы подключаетесь к базе данных, но если у вас установлен SSIS, то у вас есть экземпляр SQL Server на этом сервере, поэтому я не уверен, что это большой недостаток.

Я нахожу это гораздо менее хлопотным, чем настройка задачи сценария, но YMMV.

person Jo Douglass    schedule 21.04.2017
comment
Забавно, как вы предложили это буквально на следующий день после того, как я узнал об этом от консультанта! Я подтверждаю, что этот метод работает, но я не уверен, что он более/менее эффективен, чем другие методы. Большое спасибо, что выложили ответ - person LearnByReading; 03.05.2017