#ssis
#ssis
Вопрос:
Я создаю пакет SSIS для копирования файла из источника в пункт назначения, а затем переименовываю его с отметкой даты и времени в пункте назначения.
Задача копирования работает нормально, но когда дело доходит до переименования части пакета, я получаю следующую ошибку.
Запускается пакет SSIS «XYZ.dtsx». Ошибка: 0xC0014054 при переименовании скопированного файла: Не удалось заблокировать переменную «имя файла» для доступа на чтение с ошибкой 0xC0010001 «Переменная не может быть найдена. Это происходит, когда предпринимается попытка извлечь переменную из коллекции переменных в контейнере во время выполнения пакета, а переменной там нет. Возможно, имя переменной изменилось или переменная не создается.».
Ошибка: 0xC002F304 при переименовании скопированного файла, задача файловой системы: Произошла ошибка со следующим сообщением об ошибке: «Не удалось заблокировать переменную «имя файла » для доступа на чтение с ошибкой 0xC0010001 «Переменная не может быть найдена. Это происходит, когда предпринимается попытка извлечь переменную из коллекции переменных в контейнере во время выполнения пакета, а переменной там нет. Возможно, имя переменной изменилось или переменная не создается.». «. Ошибка: 0xC0024107 при переименовании скопированного файла: во время проверки задачи были ошибки. Предупреждение: 0x80019002 в Copy_RenameAirtricityDB: получен код предупреждения SSIS DTS_W_MAXIMUMERRORCOUNTREACHED. Метод выполнения выполнен успешно, но количество возникших ошибок (5) достигло максимально допустимого (1); что привело к сбою. Это происходит, когда количество ошибок достигает числа, указанного в MaximumErrorCount. Измените значение MaximumErrorCount или исправьте ошибки. Пакет SSIS «Copy_RenameAirtricityDB (1).dtsx» завершен: сбой.
Ответ №1:
Простой способ переместить файл и избежать необходимости в фиктивных соединениях источника и назначения и выражениях — использовать задачу скрипта с:
System.IO.File.Move(Dts.Variables["User::SourceFileName"].Value,Dts.Variables["User::DestinationFileName"].Value);
Комментарии:
1. Переменные необходимы . toString() в конце
System.IO.File.Move(Dts.Variables["User::SourceFileName"].Value.ToString(),Dts.Variables["User::DestinationFileName"].Value.ToString());
Ответ №2:
Я решил эту проблему, установив для моих соединений источника и назначения в задаче файловой системы значение «IsSourcePathVariable = False». Были созданы два новых соединения (в моем случае плоский файл), и строки подключения были установлены равными моим переменным. Похоже, что переменная отображается только как текстовая строка при передаче в задачу файловой системы, а не как местоположение файла / папки