SSIS: добавить дату создания в переменную в задаче сценария

Aug 20 2020

Я пытаюсь получить дату создания файла в SSIS с помощью задачи сценария. Я создал переменную с именем «User :: File_Created» и добавил эту переменную в следующую задачу скрипта:

        public void Main()
        {
            string fileName = @"[FilePath]";
            FileInfo fi = new FileInfo(fileName);

            if (Dts.Variables.Contains("User::File_Created") == true)
            {
                Dts.Variables["User::File_Created"].Value = fi.CreationTime;
            }
        }

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

Ответы

3 billinkc Aug 21 2020 at 22:24

Это обычная путаница.

В окне «Переменные» вы создаете переменные SSIS и назначаете значения времени разработки. Значения времени проектирования - это только дизайн. Пакет будет инициализирован этими значениями, но они могут измениться во время выполнения. Когда пакет завершается, он не сохраняет текущее значение обратно в пакет, потому что все это было во время выполнения. Расчетное время остается неизменным.

Чтобы увидеть значения времени выполнения, вам нужно открыть окно Locals, развернуть узел коллекции Variables, после чего вы сможете увидеть все текущие значения (или установить для него наблюдение). Здесь вы можете видеть, что мой пакет находится в полете, так как у нас есть зеленые узлы (задача выражения, которая устанавливает значение моей переменной в ZYX), а в окне переменных отображается ABC, но окно локальных переменных отражает истинное значение ZYX

Чтобы получить доступ к окну «Локальные» во время отладки пакета, щелкните меню «Отладка» под Windows и выберите «Локальные». https://docs.microsoft.com/en-us/visualstudio/debugger/autos-and-locals-windows?view=vs-2019