Источник потока данных SSIS OLE DB: вывод столбца, который может иметь различную длину - PullRequest
1 голос
/ 16 ноября 2010

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

Однако у меня есть одна досадная ситуация, когда хотя бы у одного клиента (может быть, больше) есть модифицированная база данных FP, где они увеличили длинустолбец в одной таблице.Когда я запускаю пакет на таком клиенте, он терпит неудачу из-за усечения.

Я думал, что мог бы просто дать себе немного места для маневра и изменить длину от 3 до 10. Таким образом, мутанты длиной 10будет принят, как и все остальные, использующие 3. Однако SSIS жалуется, когда длины столбцов не совпадают, точка.

Полагаю, у меня есть несколько вариантов:

  1. В задаче установите для ValidateExternalMetadata значение false.Однако я не уверен, что это самый ответственный вариант ... или это так?
  2. Попросите нашу команду по внедрению изменить длину до 10 для всех клиентов.Это может быть проблемой, но, по крайней мере, это будет их проблемой.
  3. Создайте копию задачи, которая работает для решений с другой длиной столбца.Вероятно, в какой-то момент реализация будет использовать неправильный пакет, и все спросят меня, почему я просто не дал им один пакет, который не может обработать все сценарии, и винит меня в этом.
  4. Используйте другой подходВы могли бы заполнить меня.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2010

Если вы используете Visual FoxPro OleDB и вас беспокоит ширина столбцов, вы можете явно принудительно их принудительно использовать, используя PADR () во время вашего вызова.Я не знаю, сколько таблиц / запросов это повлияет, но гарантирую, что вы получите ожидаемую длину столбца символов.Если иметь дело с числовым, десятичным, датой / временем, логическим (логическим), не должно быть проблемой ... В любом случае, вы можете сделать это по своему выбору, чтобы получить данныена основе (подразумеваемой выборки) полей "CharFld3", "CharFld4", "CharFld6" с шириной силы 20, 5 и 35 соответственно, независимо от длины базовой структуры.Теперь, если кто-то обновит структуру ДОЛГО, чем у вас, она будет усечена до нужной длины, но не потерпит крах.Кроме того, если они имеют более короткую длину столбца, он будет дополнен до полного размера, который вы задаете с помощью функции PADR () (pad pad right).

0 голосов
/ 16 ноября 2010

Я слаб на стороне FoxPro, но ...

Вы можете создать временную таблицу, соответствующую ожиданиям служб SSIS. Создайте задачу, которая будет использовать инструкции FoxPro для копирования данных из таблицы проблем во временную таблицу. Измените поток данных для работы с временной таблицей.

Вы можете создать предварительные шаги (создать временную таблицу и перенести ее во временную таблицу) как задачи SSIS, чтобы управление потоком управлялось вашим пакетом SSIS.

...