У меня есть пакет служб SSIS, который не выдаст ошибку даже при неправильном вводе. В моем случае этот пакет читает из простого файла и помещает записи в таблицу SQL Server. Довольно просто, ничего особенного здесь не происходит.
Плоский файл определяется как неровный вправо, 80 символов в строке, возможно, всего 10 столбцов. Проблема: иногда плоский файл не дополняется до 80 символов, поэтому мы получаем строки переменной длины вместо пробелов, заполняющих остальные. Мы хотим провалить пакет, когда это произойдет.
В моем исходном компоненте плоского файла я настроил раздел вывода ошибок так, что, если какой-либо столбец будет усечен, произойдет сбой компонента. Однако по какой-то причине все шаги отображаются зеленым, когда я запускаю пакет из Visual Studio, даже если строки не импортированы. Вот вывод, который я получаю:
Запуск пакета служб SSIS «Пакет служб SSIS 01.dtsx».
Информация: 0x4004300A при импорте данных в Table01, DTS.Pipeline: фаза проверки начинается.
Информация: 0x4004300A при импорте данных в Table01, DTS.Pipeline: фаза проверки начинается.
Информация: 0x40043006 в разделе Импорт данных в таблицу 01, DTS. Трубопровод: начинается фаза подготовки к выполнению.
Информация: 0x40043007 в разделе Импорт данных в таблицу 01, DTS. Трубопровод: начинается этап перед выполнением.
Информация: 0x402090DC при импорте данных в таблицу 01, источник плоских файлов [1]: началась обработка файла "C: \ import_files \ sampledata.dat".
Информация: 0x4004300C при импорте данных в Table01, DTS. Трубопровод: начинается фаза выполнения.
Предупреждение: 0x8020200F при импорте данных в Table01, источник плоских файлов [1]: в конце файла есть частичная строка.
Информация: 0x402090DE при импорте данных в таблицу 01, источник плоских файлов [1]: общее количество строк данных, обработанных для файла "C: \ import_files \ sampledata.dat", равно 0.
Информация: 0x402090DF при импорте данных в таблицу 01, назначение OLE DB [5467]: началось окончательное принятие для вставки данных.
Информация: 0x402090E0 при импорте данных в таблицу 01, назначение OLE DB [5467]: окончательная фиксация для вставки данных завершена.
Информация: 0x40043008 в разделе Импорт данных в таблицу 01, DTS. Трубопровод: начинается этап после выполнения.
Информация: 0x402090DD при импорте данных в таблицу 01, источник плоских файлов [1]: обработка файла "C: \ import_files \ sampledata.dat" завершена.
Информация: 0x40043009 в разделе Импорт данных в таблицу 01, DTS. Трубопровод: начинается этап очистки.
Информация: 0x4004300B при импорте данных в Table01, DTS.Pipeline: «компонент« Назначение OLE DB »(5467)» записал 0 строк.
.... поэтому записи не импортируются, и есть предупреждения о частичных строках, но пакет завершается успешно. Когда этот пакет получает хороший входной файл, 80 символов в строке, он импортирует столько строк, сколько есть в файле, без проблем.
Странно то, что у нас есть другие пакеты служб SSIS, которые не работают, когда строки переменной длины используются в качестве входных данных. Я посмотрел и сравнил эти пакеты с этим, и по жизни я не вижу, что они могут делать по-другому.
Если у вас есть какие-либо идеи или указания, которым я мог бы следовать, я был бы благодарен. Спасибо!