SSIS: задача FTP - одновременные подключения

Я создал пакет SSIS для загрузки файла с FTP-сервера. Когда я отлаживаю пакет, все идет хорошо. Но когда я планирую пакет как шаг Job, он иногда не может подключиться. Задание повторяется каждые 4 часа, а в среднем каждый другой прогон выходит из строя с ошибкой: 0xC002918F - запрос на вход был отклонен.

Соединение анонимно и не требует пароля

Я тестировал его в течение нескольких часов и узнал некоторую информацию:

  • При тестировании в FileZilla я обнаружил, что сервер отказывает во втором подключении, пытаясь загрузить файл. Установка максимального количества одновременных подключений к 1 заставила его работать в FileZilla
  • Команда FTP в командной строке работает нормально. Возможно, потому, что он закрывает соединение после каждой успешной команды
  • В диспетчере FTP-соединений я не нашел возможности ограничить количество подключений

У меня нет возможности увидеть настройки FTP-сервера. Что меня больше смущает, так это то, что некоторые заданные задачи работают нормально, а некоторые терпят неудачу. Я не нашел в нем никакой регулярности.

Что я пробовал до сих пор:

  • Активный/пассивный режим
  • Ограничение повторных попыток в диспетчере FTP-соединений до 1
  • Сдвиг времени расписания, поэтому он не сталкивается с другими (более старыми) задачами, загружаемыми с сервера.
  • Настройка задачи FTP в режиме ASCII (сервер говорит FileZilla, что он принимает только символы ASCII)

Пока не повезло. Все еще некоторые успехи, а некоторые нет.

EDIT:

FTP-сервер находится на устройстве Simatic.

На этой неделе я продолжал расписание каждые 1 час и продолжал пинговать устройство каждые 30 секунд. Тем не менее некоторые попытки SSID не преуспевают, и ping проходит каждый раз: -/

Ответ 1

Я бы заменил стандартную задачу FTP SSIS на выполнение задачи процесса и вызовет WinSCP.

https://winscp.net/eng/docs/guide_automation

Я нашел WinSCP намного надежнее и гибко. Вы можете передать ему командную строку, построенную с использованием выражений, чтобы охватить все функции FTP-задачи SSIS и т.д.

Ответ 2

Я думаю, что вы должны принять только использование обходного пути в этом сценарии, возможно, установите шаг задания SSIS агента SQL для повторной попытки после задержки X секунд (расширенная вкладка шага задания SQL). Мы делаем это много, когда подключаемся к flaky cloud API с помощью SSIS.

Или, может быть, контейнер цикла в вашем пакете, который продолжает сбой и выходит из строя - возможно, попробуйте 3 раза подключиться?

Извините, если это уже очевидно для вас.

Ответ 3

По моему опыту, иногда FILE LOCK и DB CONNECTION не заканчиваются даже после завершения выполнения пакета.

Я предлагаю вам использовать Script Task и выполнять загрузку с использованием кода С# и убедиться, что вы закрываете FTP-соединение в конце.

Ответ 4

Ранее ошибка называлась:

'0xC002918F', - 1073573489, 'DTS_E_FTPTASK_UNABLETOCONNECTTOSERVER', 'Невозможно подключиться к FTP-серверу с помощью "__".'

Задача FTP явно закрывает соединение в конце действия, поэтому, если соединение остается открытым, оно должно быть чем-то с вашим сервером.

Оба CozyRock и PragmaticWorks имеют фантастические задачи FTP для SSIS.

Руководство, перечисленное на веб-сайте Microsoft

https://support.microsoft.com/en-us/kb/925880

https://technet.microsoft.com/en-us/library/bb794745.aspx

Помимо брандмауэра/разрешений/ограничений Проверьте учетные данные FTP или, точнее, как они сохраняются/извлекаются. В этом случае эмпирическое правило состоит в том, чтобы полагаться на SQL Server, то есть на использование уровня безопасности пакетов "Опираться на сервер хранения и роли для контроля доступа".. Этот подход должен полностью удалить все проблемы с учетными данными FTP (исключая туманно, конечно).

Однако. Это значение по умолчанию, применяемое при использовании Model Deployment Model для хранения пакетов в каталоге SSISDB, где пакет, который вы отметили.

Не используйте XP_CMDSHELL и вызывайте внешние программы без необходимости в бизнесе, как советует вышеупомянутый плакат. Включение CMDSHELL является существенным риском для безопасности.

Ответ 5

Выстрел в темноте, не могли бы вы попытаться обновить пакет и установить DelayValidation = True?

DelayValidation: True

Процедуры проверки устанавливают соединения для их проверки. Возможно, процедура проверки является другой параллельной связью? Стоит сделать снимок?