Пакету SSIS не удалось заблокировать переменную «» для доступа на чтение с ошибкой 0xC0010001 «Переменная не может быть найдена

#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». Были созданы два новых соединения (в моем случае плоский файл), и строки подключения были установлены равными моим переменным. Похоже, что переменная отображается только как текстовая строка при передаче в задачу файловой системы, а не как местоположение файла / папки