Сбой задания SQL при запуске пакетов SSIS с путем, содержащим дефис «-«

#sql-server #windows

#sql-server #Windows

Вопрос:

Мне нужно запланировать задание, которое запускает несколько пакетов SSIS, которые считывают данные из нескольких файлов.

Пути к файлам похожи:

 \FilePathuat-filesFileName.csv
 

Таким образом, значения параметров имеют вид:

 \FilePathuat-files
 

Проблема в том, что он интерпретирует -files как опцию:

Параметр «-files /Par $Project::FilePath;»FilePathuat» недопустим. Недопустимые параметры командной строки. Сбой шага

Независимо от того, введены ли пути в качестве значения параметра конфигурации шага SSIS (1 — на рисунке ниже) (задания SQL) или переданы переменными среды (2).

Задание SQL - конфигурация шага SSSI

К сожалению, я не могу изменить имя папки. Необходимо выяснить, как планировать пакеты 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. Какое-нибудь решение?