Как сбросить объектную переменную из задачи скрипта в SSIS?

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

В цикле уровня папки моей первой задачей является задача сценария, в которой я извлекаю все пути к файлам в объектную переменную с областью уровня пакета в виде массива строк, как показано ниже.

string targetDirectory = Convert.ToString(Dts.Variables["SourceFolderLocation"].Value);
string[] fileEntries = Directory.GetFiles(targetDirectory, "*.pdf");
Dts.Variables["FileList"].Value = fileEntries;

Dts.Variables ["FileList"]. Значение - это моя объектная переменная с областью действия на уровне пакета.

Теперь мое требование заключается в задаче сценария цикла уровня папки, сначала для сброса этой объектной переменной, а затем для установки нового списка файлов в эту объектную переменную, как если бы я получил какое-либо исключение для доступа к папке, он не должен обрабатывать файлы предыдущей папки.

Мой вопрос в том, как сбросить объектную переменную в коде С # задачи сценария? Таким образом, он не обрабатывает файлы предыдущей папки снова, а также я не получаю, что перечислитель не должен содержать ошибку нулевого значения.

Любая помощь будет оценена.


person Naim Halai    schedule 28.02.2017    source источник


Ответы (1)


Если я правильно понимаю, вы сможете установить для него новый string[] перед этим вызовом GetFiles, чтобы «сбросить» его.

string[] fileEntries = new string[] {};
try {
    string targetDirectory = Convert.ToString(Dts.Variables["SourceFolderLocation"].Value);
    fileEntries = Directory.GetFiles(targetDirectory, "*.pdf");
    Dts.Variables["FileList"].Value = fileEntries;
}
catch (Exeception e) { 
    // handle exception
}
person sorrell    schedule 28.02.2017
comment
Это может быть старый программист на C, которым я начинал, но разве это решение не оставит прежнее содержимое переменной FileList в памяти, когда вы назначите его новому строковому массиву? Или с этим справится сборка мусора? - person samp; 22.01.2019
comment
Хороший глаз - проверьте здесь раздел «Удаление памяти» (albahari.com/valuevsreftypes.aspx). . Я думаю, что это будет собирать и утилизировать GC. - person sorrell; 22.01.2019