Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как заставить компоненты dtsx-пакета дожидаться окончания загрузки с FTP?  [new]
topic starter
Member

Откуда:
Сообщений: 245
В SSIS-пакете есть задача FTP и несколько задач потока данных.

Задача FTP скачивает файлы в локальную папку. Задачи потока данных эти файлы оттуда подцепляют и целиком импортируют в БД на SQL-сервере.

При выполнении пакета вываливаются предупреждения на всех задачах потока данных: "Имеется частичная строка в конце файла". Гляжу на импортированные таблицы в БД - и вижу, что в каждой таблице не хватает одной записи с конца.

Выглядит это так. Есть, например, на FTP файл 1.csv такого содержания:
aaa;111
bbb;222
ccc;333

Запускаем пакет, получаем ворнинг про частичную строку, глядим в БД и видим таблицу dbo.Table1 такого содержания:
aaa111
bbb222
- как видим, последняя строка потерялась.

Создается впечатление, что управление в пакете передается задаче потока данных РАНЬШЕ, чем задача FTP заканчивает загрузку. Бред? Или нет?
11 сен 12, 04:42    [13143407]     Ответить | Цитировать Сообщить модератору
 Re: Как заставить компоненты dtsx-пакета дожидаться окончания загрузки с FTP?  [new]
topic starter
Member

Откуда:
Сообщений: 245
Погуглил, нашел у майкрософта какую-то заплатку на этот счет.
Смущает то, что там речь идет об 2005-ом SSIS, а у меня 2008-й стоит. И еще сказано, что проблема возникает только на файлах определенного размера (больших) или на файлах фиксированной ширины:
support.microsoft.com/kb/937969
This problem occurs if the following conditions are true:
- The flat file is in the fixed width format.
- The size of the flat file is slightly larger than 128 kilobytes (KB), or the size of the flat file is any multiple of 128 KB. For example, the size of the flat file is 256 KB or 512 KB.

А у меня формат файлов указан "с разделителями". И размер маленький: 1-2 Кб.
Куда дальше копать?
11 сен 12, 05:09    [13143413]     Ответить | Цитировать Сообщить модератору
 Re: Как заставить компоненты dtsx-пакета дожидаться окончания загрузки с FTP?  [new]
topic starter
Member

Откуда:
Сообщений: 245
Уточню еще на всякий случай.
На скачиваемые файлы настроены диспетчеры соединений с плоскими файлами: ConnectionManagerType=FLATFILE, Format=С разделителями, HeaderRowDelimiter={CR}{LF}.
В csv-файлах последняя строка данных везде заканчивается переводом каретки, т.е. пустой строкой (проверено).
11 сен 12, 05:20    [13143414]     Ответить | Цитировать Сообщить модератору
 Re: Как заставить компоненты dtsx-пакета дожидаться окончания загрузки с FTP?  [new]
topic starter
Member

Откуда:
Сообщений: 245
И вот еще странность: из-под Visual Studio пакет отрабатывает без ошибок, все записи прекрасно импортируются в БД. А после развертывания пакета на сервере - начинаются ворнинги "имеется частичная строка в конце файла", ну и неполная загрузка в таблицы.
Не могу понять, в чем дело.
11 сен 12, 06:15    [13143422]     Ответить | Цитировать Сообщить модератору
 Re: Как заставить компоненты dtsx-пакета дожидаться окончания загрузки с FTP?  [new]
topic starter
Member

Откуда:
Сообщений: 245
Прошу прощения, забыл указать:
SELECT @@VERSION
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
Apr 2 2010 15:48:46
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Может, сервис пак какой-нибудь нужно накатить?
11 сен 12, 06:33    [13143424]     Ответить | Цитировать Сообщить модератору
 Re: Как заставить компоненты dtsx-пакета дожидаться окончания загрузки с FTP?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31868
topic starter
Прошу прощения, забыл указать:
SELECT @@VERSION
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
Apr 2 2010 15:48:46
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Может, сервис пак какой-нибудь нужно накатить?
У меня на SQL Server 2008 R2 такого не было (правда, от встроенного FTP Task в итоге отказались, поскольку не поддерживает SFTP)

Попробуйте для начала накатить сервис-пак, у вас голый релиз. Сервис пак на клиент не забудьте, не только на сервер.
11 сен 12, 08:11    [13143481]     Ответить | Цитировать Сообщить модератору
 Re: Как заставить компоненты dtsx-пакета дожидаться окончания загрузки с FTP?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31868
topic starter
И вот еще странность: из-под Visual Studio пакет отрабатывает без ошибок, все записи прекрасно импортируются в БД. А после развертывания пакета на сервере - начинаются ворнинги "имеется частичная строка в конце файла", ну и неполная загрузка в таблицы.
Может, как раз сервис-пак накатили на клиента, а на сервер нет?
11 сен 12, 08:12    [13143485]     Ответить | Цитировать Сообщить модератору
 Re: Как заставить компоненты dtsx-пакета дожидаться окончания загрузки с FTP?  [new]
topic starter
Member

Откуда:
Сообщений: 245
alexeyvg
у вас голый релиз.

Хм, странно, почему голый? Я лично SP1 ставил, как сейчас помню.
topic_starter
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
Apr 2 2010 15:48:46
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Или это не считается за SP?..

Впрочем, проблема с неполной загрузкой таблиц уже решилась. Помог совет №3 вот отсюда:
turn off text qualification for non-text

Я просмотрел свойства всех полей в диспетчерах соединений с плоскими файлами, и и в нетекстовых полях установил TextQualified в False. Последние строки файлов больше не теряются. Правда, предупреждения насчет "частичной строки в конце файла" продолжают выскакивать! Но поскольку это warnings, а не errors, то пакет благополучно отрабатывает.
11 сен 12, 08:47    [13143548]     Ответить | Цитировать Сообщить модератору
 Re: Как заставить компоненты dtsx-пакета дожидаться окончания загрузки с FTP?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31868
topic starter
alexeyvg
у вас голый релиз.

Хм, странно, почему голый? Я лично SP1 ставил, как сейчас помню.
topic_starter
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
Apr 2 2010 15:48:46
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
Или это не считается за SP?..
Service Pack 1 - это относится к Windows :-)

http://ru.wikipedia.org/wiki/Список_версий_Microsoft_SQL_Server#SQL_Server_2008_R2

ВерсияБилд
SQL Server 2008 R2 RTM10.50.1600
SQL Server 2008 R2 (SP1)10.50.2500.0
SQL Server 2008 R2 (SP2) CU210.50.4263.0
11 сен 12, 10:12    [13143920]     Ответить | Цитировать Сообщить модератору
 Re: Как заставить компоненты dtsx-пакета дожидаться окончания загрузки с FTP?  [new]
Glory
Member

Откуда:
Сообщений: 104751
topic starter
Уточню еще на всякий случай.
На скачиваемые файлы настроены диспетчеры соединений с плоскими файлами: ConnectionManagerType=FLATFILE, Format=С разделителями, HeaderRowDelimiter={CR}{LF}.
В csv-файлах последняя строка данных везде заканчивается переводом каретки, т.е. пустой строкой (проверено).

Файл то этот загружается в базу в SSIS с указанными разделителями ?
11 сен 12, 10:22    [13143985]     Ответить | Цитировать Сообщить модератору
 Re: Как заставить компоненты dtsx-пакета дожидаться окончания загрузки с FTP?  [new]
topic starter
Member

Откуда:
Сообщений: 245
alexeyvg
Service Pack 1 - это относится к Windows :-)
Фу блин, ну я и туплю :-) Точно.
Сейчас все заработало уже. Правда, по-прежнему лезут предупреждения. Когда сервис-пак натяну на сервер, может они исчезнут, поглядим.

Glory
Файл то этот загружается в базу в SSIS с указанными разделителями ?
Да, с указанными. В свойствах диспетчера соединения с плоским файлом стоят следующие параметры:
Разделитель строк{CR}{LF}
Разделитель столбцовТочка с запятой {;}

И во всех загружаемых CSV-файлах поля разделены точкой с запятой, а все строки заканчиваются переводом каретки.
11 сен 12, 10:49    [13144219]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить