SSIS: невозможно записать в файл Excel (.xlsx) после копирования файла с помощью задачи «Файловая система» - PullRequest
0 голосов
/ 11 июля 2019

В моем текущем сценарии я реализую функциональность, которая считывает данные из базы данных SQL и записывает в файл Excel.

Компонент задачи файловой системы: Целевой файл Excel, для которого я являюсьпопытка записи копируется в каталог назначения из другого исходного каталога.В исходном каталоге есть файл Excel, который я использую в качестве шаблона для копирования в целевой каталог.Для этого я использую "File System Task" компонент и "Copy File" функцию.

ВЫПУСК: «Задача файловой системы» успешно копирует файл, но позже происходит сбой записи в файл Excel с приведенной ниже ошибкой.

Opening a rowset for "C:\Users\Public\Documents\New_Carriers-2019-07-11.xlsx" failed. Check that the object exists in the database.  

ВРЕМЕННОЕ РЕШЕНИЕ / УСТРАНЕНИЕ НЕИСПРАВНОСТЕЙ: 1. Я установил для проекта значение 32 bit runtime на основе обратной связи с другими пользователями.2. Я также применил задержку перед тем, как начать запись в файл.3. Я также проверил соответствующие права доступа для записи файла в каталог назначения.

Ниже приведен скриншот моего потока управления.

Control Flow Task

File Sytem Task Editor

enter image description here

Любое направление к разрешению приветствуется.Я обнаружил похожие сообщения с такими же ошибками, но мне интересно, почему моя проблема выглядит иначе.

Ответы [ 2 ]

0 голосов
/ 17 июля 2019

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

Я проверил следующие вещи:

  1. Сначала я проверил Task Manager, чтобы увидеть, удерживает ли мои файлы какой-либо существующий связанный с Microsoft Excel процесс. Что было не так. (Т.е. я не нашел существующего процесса)

  2. Во-вторых, я применил следующие шаги для сортировки. 2.1. Я удалил все предыдущие файлы из директории назначения, где я пишу новый файлы, чтобы убедиться, что я запускаю свой пакетный процесс заново. 2.2. Я очистил все из каталога %temp%. (Который я полагаю, мог бы / не мог быть делом для всех) 2,3. Выполнив вышеуказанные шаги, я заметил в SSIS Excel Destination component где мы предоставляем Name of the Excel sheet компонент автоматически адаптируется имя файла с $ в качестве суффикса, указывающего, что компонент успешно установил соединение с желаемым путем для чтения исходного шаблона. Например мое имя файла было New_Carriers.xlsx, компонент адаптировал имя как New_Carriers$. 2,4. После этого я до сих пор запускаю свой пакет без любая проблема. Несмотря на то, что это может быть прямо вперед, но потребуется довольно много времени для сортировки и подтверждения того, как обрабатывать Excel Destination гладко.

0 голосов
/ 11 июля 2019

Вам нужно запустить задачу «Выполнение SQL», чтобы создать таблицу / лист в файле Excel, даже если файл уже существует.

Execute SQL Task

Если вы добавите этот шаг после задачи «Файловая система» и правильно настроите подключение к Excel, это позволит вам вставить данные в поток данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...