2015-04-13 2 views
2

У меня есть источник данных Excel с 9 листами. Если я установил диспетчер подключений RetainSameConnetion = True, импорт займет секунды. Если я установил свойство False, это займет около минуты. Все идет нормально. Однако в конце пакета я хочу переместить файл Excel в папку архива. Если для параметра RetainSameConnection установлено значение True, файл заблокирован и не может быть перемещен.Импорт данных из Excel с использованием SSIS

Есть ли способ в сценарии освободить соединение, чтобы файл можно было перемещать в конце. Я пробовал DTS.Connections("xxxx").ReleaseConnection(y), но это, похоже, не работает, независимо от того, что я установил для значения y.

ответ

0

Там будет не построено в пути к этому, как SSIS разработан, чтобы иметь различные аспекты рабочих мест, разбитые на несколько пакетов, и поэтому соединение не должно быть отброшено в пакете он создан.

Это основана на модели развертывания проекта и по дизайну, как Microsoft любит говорить.

Теперь это действительно хакерский способ сделать это, но поскольку никто другой не наносит ему удар, я дам ему шанс.

Вам нужно будет создать фиктивную переменную (лучше всего boolean).

Установить выражение свойства keepsameconnection для вашего диспетчера соединений на выражение, которое оценивается как true. (variable == true)

Добавьте задачу сценария прямо перед тем, как переместить файл в архив и изменить значение вашей логической переменной в соответствии с ее значением по умолчанию.

По завершении задачи вашего скрипта ваше соглашение о сохранении должно теперь оцениваться как ложное и соединение должно упасть.

Если все идет хорошо, диспетчер соединений больше не хочет сохранять это соединение для полного выполнения пакета.

Не уверен, что версия ставок или SSDT, которые вы используете, позволит провести живую оценку этого имущества, но это стоит того.

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