Запрос Oracle как источник в SSIS определяет неправильные типы данных - PullRequest
2 голосов
/ 05 февраля 2010

У меня есть несколько сложный запрос, который я хочу использовать в качестве источника в пакете служб SSIS. Я создаю источник OLE DB, задаю режим доступа как SQL и вставляю свой запрос в текстовое поле команды. Когда я нажимаю «Просмотр», образцы данных возвращаются, и все выглядит хорошо.

Однако, когда я пытаюсь запустить пакет, я получаю сообщение "внешние столбцы не синхронизированы со столбцами источника данных", и сообщения об ошибках "внешний столбец 'xxx' необходимо удалить из внешних столбцов". Обратите внимание, что в режиме разработки на вкладке Список ошибок нет записей.

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

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

Спасибо за понимание.

1 Ответ

2 голосов
/ 05 февраля 2010

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

Во-первых, если вы пытаетесь использовать расширенный редактор, чтобы изменить это (что я рекомендую против, поскольку сопровождающим трудно увидеть, что вы сделали), вы должны изменить настройки как для внешнего, так и для выходного исходного столбца синхронизации. Что означает «исправление», когда вы нажимаете «да», это несоответствие между ними.

Во-вторых, вы можете оставить их как строки и использовать компонент преобразования данных для преобразования в нужные вам типы. Это проще для будущих сопровождающих.

Я предпочитаю использовать SQL-оператор oracle, который устанавливает нужные мне типы в pl / sql, чтобы SSIS создавал поля с правильными типами. Это позволяет определению быть явным, чтобы сопровождающие могли видеть, что было сделано. Для этого я использую SQL-запрос для построения моего оператора выбора oracle из структуры таблицы назначения (в проекте, для которого я его построил, мы переносим все данные / структуру без изменений из Oracle на промежуточный сервер Sql Server до применения преобразований .)
https://docs.google.com/leaf?id=0B4aVrSS2ke2IZGVkYWJkOWYtY2Y3Yy00MDI5LTkyMDctYjgwMGY2YzZiODRm&hl=en

...