#sql-server #windows
#sql-server #Windows
Вопрос:
Мне нужно запланировать задание, которое запускает несколько пакетов SSIS, которые считывают данные из нескольких файлов.
Пути к файлам похожи:
\FilePathuat-filesFileName.csv
Таким образом, значения параметров имеют вид:
\FilePathuat-files
Проблема в том, что он интерпретирует -files как опцию:
Параметр «-files /Par $Project::FilePath;»FilePathuat» недопустим. Недопустимые параметры командной строки. Сбой шага
Независимо от того, введены ли пути в качестве значения параметра конфигурации шага SSIS (1 — на рисунке ниже) (задания SQL) или переданы переменными среды (2).
К сожалению, я не могу изменить имя папки. Необходимо выяснить, как планировать пакеты SSIS. Я уже пробовал использовать кавычки («Значение параметра»).
Проблема, похоже, решается, когда я запускаю пакет SSIS в качестве шага SQL и выполняю пакет, используя хранимую процедуру SSISDB с FilePath в качестве одного из параметров, но это невозможно сделать таким образом.
Как избежать минуса / дефиса в данном конкретном случае?
Комментарии:
1. Требуется правильное экранирование значений, чтобы они работали в командной строке, и это может быть сложно в зависимости от типа языка / скрипта, который часто требует собственного экранирования строковых литералов. Покажите код из вашей попытки.
2. Значения параметров (пути к папкам, в которых хранятся файлы) просто либо задаются как значение параметра на вкладке Конфигурации шага SSIS в задании SQL (агент SQL Server), либо передаются как переменные среды. Постараюсь прикрепить снимок экрана к описанию выше. И да, именно поэтому я пытался использовать » «, чтобы избежать дефисов. Все та же ошибка. Как их избежать?
3. До сих пор не показали ваш код. Значения параметров волшебным образом не становятся аргументами командной строки. Какое-то выражение или присвоение делает это вместе с тем, что оно где-то используется.
4. У меня есть параметры проекта в решении SSIS, которые представляют собой путь к папке, как в моем примере «\ FilePath uat-files «. Затем в каждом пакете SSIS в рамках этого проекта у меня есть переменные, которые определяют шаблон файла (например, FileName*.csv, FileName и т. Д.), И Оба они используются для построения переменной ConnectionStringToEachFile, например @[Project::FolderPath] @[User::FileName] . Затем я использую переменную ConnectionStringToEachFile в выражении ConnectionManager входного файла.
5. Какое-нибудь решение?