Как изменить переменную в SSIS?

У меня есть простая строковая переменная со следующим значением: «C: \ Test.txt». Теперь я хотел бы отредактировать переменную так, чтобы она указывала на другой файл. Я не могу найти способ сделать это. Я могу изменить имя, тип данных, но не само значение! Нужно ли удалять переменную и создавать новую?

Обновить: Проблема была вызвана тем, что для свойства «ReadOnly» установлено значение «True». Для типичных сценариев, смотрите принятый ответ ниже.

 user69110230 янв. 2012 г., 15:49
@Yuck: проблема появилась во время разработки.
 Yuck30 янв. 2012 г., 14:25
Вы хотите изменить значение во время разработки или во время выполнения?

Ответы на вопрос(2)

переменная держит. Значение времени разработки - это значение, которое вы назначаете при первом создании переменной. В вашем случае переменная содержит C: \ Test.txt в качестве значения времени разработки. Каждый раз, когда вы открываете пакет, он будет показывать C: \ Test.txt, пока вы не измените его в

Чтобы изменить значение переменной во время работы пакета, вы можете либо установить значение, либо рассчитать его. Здесь я создал переменную уровня пакетаCurrentFile со значением C: \ Test.txt

Одна вещь, которая часто сбивает с толку людей, - это то, что они правильно изменили значение времени выполнения, но когда они запускают его в BIDS, они видят «старое» значение. Значение, отображаемое в окне переменных, не изменяется во время выполнения пакета.

Во время выполнения пакета в моем окне Variables все еще отображается значение времени разработки (C: \ Test.txt), но истинное значение отражается в окне Locals (C: \ Test2.txt)

Установка значения

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

/УСТАНОВЛЕН

Выполнение в командной строке (dtexec.exe), щелчок правой кнопкой мыши по пакету и запуск из файловой системы (dtexecUI.exe) или создание шага задания агента SQL в службах интеграции SQL Server - все позволяют указать значение времени выполнения с помощью команды SET , Используя вышеуказанную переменную, следующая команда установит значение времени выполнения вC:\Test2.txt

dtexec /file C:\Generated.dtsx /set \Package.Variables[User::CurrentFile].Properties[Value];"C:\Test2.txt"
конфигурация

SSIS предлагает возможность создавать источники конфигурации для предоставления значений времени выполнения для пакетов. Статья, на которую я ссылался выше, намного лучше описывает плюсы и минусы параметров конфигурации, чем я буду здесь. Я скажу, что я обычно использую оба - моя команда SET настраивает диспетчер соединений, который затем используется пакетом для поиска «полного» набора конфигураций пакета.

Расчет стоимости

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

Задачи

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

Контейнер петли Foreach а такжеВыполнить задачу SQL две другие большие задачи, на которые вы должны обратить внимание при назначении значения переменной.

Выражения

Выражения являются самой славной конфетой в наборе инструментов служб SSIS. Почти каждая «вещь» в SSIS предоставляет свойства для конфигурации. Это полезно, но использование назначения выражения для построения этих свойств является выдающимся.

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

Наконец, ничто не мешает смешивать и сопоставлять эти подходы. Обычно я использую конфигурацию для указания перечислителя файлов на правильную начальную папку, а затем использую вычисленные значения для идентификации текущего файла для обработки.

Решение Вопроса

просто щелкните правой кнопкой мыши на свободном месте и -> Переменные.

Но если вы хотите изменить его во время выполнения, я предлагаю вам:

создать сценарий задачивыберите языкдобавьте вашу переменную в ReadWriteVariables.Редактировать скрипт.

Например в VB:

Dts.Variables ("myVariable"). Value = @ "C: \ Test2.txt";

Dts.TaskResult = ScriptResults.Success

 user69110230 янв. 2012 г., 15:47
Реальная проблема заключалась в том, что для меня была случайно установлена переменная ReadOnly, и я не мог изменить свое значение. Спасибо за ответ! Я все равно приму это, потому что это правильный способ изменения переменной в типичных сценариях.

Ваш ответ на вопрос