2014-02-21 2 views
0

У меня есть поток управления SSIS с примерно дюжиной элементов, и цель запуска этого пакета - запустить некоторый оператор обновления в SQL, а затем запустить запрос для получения выходных данных и записать это в excel файл. Итак, что я сделал, создается «задача потока данных» в конце моей обработки, где я хочу писать в Excel. После перехода на вкладку «поток данных» я добавил источник OLE DB и установил соединение, а также добавил команду SQL. Эта команда SQL генерирует вывод, который я хочу записать в Excel. Для вывода всего 1 столбец, и я также сопоставлен в OLE DB Source.Нет Входной столбец для Excel Назначение

После этого я добавил объект «Назначение Excel». Затем я создал новое подключение к файлу Excel в нашей сети, где я хочу, чтобы данные записывались. Я могу выбрать имя листа excel в файле, а затем щелкнуть элемент «Mappings». Проблема заключается в том, что «Input Column» на странице «Mappings» не позволяет мне выбирать поле, все, что у него есть, - «игнорировать».

Я попытался использовать SSIS для создания таблицы Excel (это не сработало), и я также создал файл Excel за пределами SSIS (который не работал), я не могу понять, как обойти это.

EDIT: 1) Это создало таблицу excel, и я могу сопоставить два поля вместе с объектом назначения Excel. НО у меня есть красный «X» на объекте, который говорит: столбец XXX не может преобразовать между unicode и не-Unicode. Я не могу использовать этот объект, если он имеет красный «X». Кроме того, в другом объекте Excel, который я использую, я создаю таблицу точно так же, как в SSIS, но получаю ПРЕДУПРЕЖДЕНИЕ, заявляющее усечение произойдет.

2) Я развиваюсь в VS2008 с SP1. БД - это SQL 2008r2. Файл excel является файлом XLSX, и мой диспетчер подключений Excel настроен на использование Office 2007.

3) Тип данных столбца для соединения, которое у меня есть с красным «X», - это DT_STR, длина 50. Данные тип столбца для соединения, которое у меня есть с WARNING, - DT_WSTR, длина = 306. Это только чтение.

+0

(1) Когда вы говорите: «Я попытался использовать SSIS для создания таблицы Excel (которая не сработала) ...», что произошло? Если появилось сообщение об ошибке, * когда * вы его получили, и что было сообщением? (2) Также, какие версии SQL Server и MS Office? (3) Когда вы щелкаете зеленую стрелку в потоке данных (всегда помните, чтобы dbl-click это - это больше, чем отображение метаданных - это также ** ОБНОВЛЕНИЕ ** метаданных) ... что такое тип данных для эта колонка? ((См. Таблицу «Сопоставление типов данных служб Integration Services с типами данных базы данных» на странице http://msdn.microsoft.com/en-us/library/ms141036%28v=sql.100%29.aspx)) –

+0

Я ответил эти вопросы в ОП. Ответ был слишком длинным, чтобы вставить комментарии – Baub

ответ

0

Ах ... спасибо, Baub - помните, в будущем для отправки сообщений об ошибках ... что бы сделал это быстро и легко ответить вам:

МС Офис «двигатель» используется, чтобы экспортировать в Excel, принимает только текст Unicode (NVARCHAR в SQL или DT_WSTR в SSIS). Он не принимает текст ASCII (VARCHAR в SQL или DT_STR в SSIS).

Самый простой подход, я нахожу, заключается в преобразовании столбца в T-SQL. Так как вы сказали, длина = 50:

Column2Export = CONVERT (NVARCHAR (50), OriginalColumn)

Альтернативный подход, чтобы сделать это в SSIS, хотя я думаю, что это намного больше работы. В вашей задаче потока данных вы должны добавить компонент преобразования данных между исходным компонентом и целевым компонентом. Почему это больше работает: нажмите на типы данных для каждого столбца ... и вам нужно сделать это снова, если макет когда-либо изменится. Если вы выполняете преобразование в T-SQL, тогда SSIS может автоматически обнаружить новый столбец, просто воссоздавая источник, стрелку и пункт назначения. Компонент преобразования данных не все автоматически определяется.

Для получения дополнительной информации см как ответы на дочернем сайте dba.StackExchange.com:
https://dba.stackexchange.com/questions/41608/converting-non-unicode-string-to-unicode-string-ssis
(2-ой ответ там говорит о загружаемом компоненте «замещающее преобразование данных» ... но я вижу, что по-прежнему больше работы чем преобразование T-SQL.)

+1

Я попытался преобразовать в NVARCHAR в свой SQL-скрипт, но все равно не мог обойти эту проблему, но с помощью задачи преобразования данных работала нормально. – Baub

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