2015-04-20 2 views
12

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

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

Я испытал это в течение нескольких часов в настоящее время и выяснили некоторую информацию:

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

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

То, что я пытался до сих пор:

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

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

EDIT:

Сервер FTP на Simatic устройстве.

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

+0

Я также попытался настроить размер куска безрезультатно. –

+0

не могли бы вы проверить пакет?установите свойство уровня защиты как «Положитесь на хранилище серверов и роли для контроля доступа». – Conqueror

+0

@Jacks, у меня нет такой опции, поскольку она размещена в каталоге SSIS –

ответ

3

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

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

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

+0

Благодарим вас за ответ. Я задал задание для запуска каждый час, а требование - иметь данные не более 4 часов. Задание выполнено в 50% попыток, поэтому этого достаточно. Я держу этот вопрос активным, если кто-то может решить причину проблемы. – DangeMask

4

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

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

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

+0

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

+0

У команд WinSCP put и get есть опция -delete. –

+0

Ну, может быть, именно то, что я искал тогда. Я должен это проверить. –

0

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

DelayValidation: True

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

+0

Пробовал это, не работал для меня, но хорошая мысль. У меня, кажется, нет проблем при запуске локально, но при развертывании на сервере, который размещает его и запускает его по расписанию, кажется, что он проходит через пару файлов, чем перерыв. Моя проблема может немного отличаться от OP, но перекрытие соединений кажется основной причиной. –

2

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

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

+0

или использовать filezilla из задачи сценария, где вы можете контролировать тайм-аут и автоматические повторы и т. Д. Дело в том, что вы не полагаетесь на встроенный ftp-объект в SSIS. Как Майк Мед предлагает ниже. –

+0

Мне просто нравится избегать использования внешнего исполняемого файла, насколько я могу;) – FLICKER

2

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

'0xC002918F',-1073573489,'DTS_E_FTPTASK_UNABLETOCONNECTTOSERVER','Unable to connect to FTP server using "__".'

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 (исключая, конечно, туманность).

Однако, это настройка по умолчанию применяется при использовании Project Deployment Model to store packages in the SSISDB catalog which is where the package you noted resides.

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

Смежные вопросы