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

Откуда:
Сообщений: 245
Добрый день всем.

Краткая суть проблемы: после развертывания пакета на целевой сервер, пакет перестает работать правильно. А именно: он перестает реагировать на исключительные ситуации. Выглядит это так, будто он молча их "проглатывает".

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

Пробовал развертывать разными способами: с ui (кликая не манифест) - и на SQL-сервер, и в файловую систему; без ui - просто копируя dtsx-файл со своего компа в папку сервера. Запускать пробовал и из Management Studio, и через SQL Agent, и через dtexec. Результат всегда одинаковый: пакет не обрывает свою работу при возникновении ошибок и тупо прёт дальше. Хотя при запуске в BIDS - прерывает!

Догадываюсь, что причина скорее всего какая-то простейшая, но не могу додуматься, поиск по форуму и гугл не помогли. С проблемой бьюсь второй день, а решить нужно срочно :-(
27 дек 12, 21:29    [13697438]     Ответить | Цитировать Сообщить модератору
 Re: dtsx-пакет после развертывания работает неправильно!  [new]
topic starter
Member

Откуда:
Сообщений: 245
Воспроизвел проблему на маленьком тестовом пакете: пакет в цикле перебирает csv-файлы в локальной папке и из каждого файла читает данные.

Пакет очень простенький: в потоке управления находится только один контейнер "цикл по каждому элементу", в нем - одна-единственная задача потока данных.
В этой задаче - один источник "Неструктурированный файл", который читает csv-файл через диспетчер соединений типа FLATFILE. Больше никаких преобразований и назначений нет.
Также на задачу потока данных повешен обработчик OnPreExecute, который выводит в отчет (в обычный txt-файлик) имя обрабатываемого csv-файла.

MaximumErrorCount у всех компонентов пакета выставлен в 1.

Исходных csv-файлов три штуки, структура у всех одинаковая: текстовое поле и поле даты. Файлы 1.csv и 3.csv - валидные, а 2.csv - нет: вместо даты в поле содержатся буквы, и это приводит к ошибке в момент выполнения задачи потока данных, а именно в момент чтения данных компонентом-источником "Неструктурированный файл".

В среде BIDS все работает нормально: как только в цикле встречается неправильный файл, выполнение останавливается с ошибкой "Невозможно преобразовать значение из-за возможной потери данных", и файл отчета выглядит так:
1.csv
2.csv
При запуске на сервере, выполнение пакета НЕ прерывается и файл отчета выглядит так:
1.csv
2.csv
3.csv
то есть ошибочный файл №2 был якобы "успешно обработан" и управление в цикле перешло к файлу №3, чего не должно быть!

Как это победить? Куда копать? Что почитать?
Помогите, добрые люди.
27 дек 12, 21:40    [13697478]     Ответить | Цитировать Сообщить модератору
 Re: dtsx-пакет после развертывания работает неправильно!  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
topic starter
то есть ошибочный файл №2 был якобы "успешно обработан" и управление в цикле перешло к файлу №3, чего не должно быть!
Странно, обработка ошибок зависит от пакета и исполняемой среды.

Версии то одинаковые проги, которая исполняет пакеты?

Т.е. какая версия клиента в обоих случаях?
27 дек 12, 23:21    [13697888]     Ответить | Цитировать Сообщить модератору
 Re: dtsx-пакет после развертывания работает неправильно!  [new]
topic starter
Member

Откуда:
Сообщений: 245
На моем компе запускаю из-под MS Visual Studio 2008, версия 9.0.30729.4462 QFE.

На сервере запускаю сейчас через dtexec. Вот плохо, что сервак у нас до сих пор голый, все никак не соберусь пропатчить.
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) 

Тут на форуме говорят, что пока сервис-паки не накатишь, глюков всяких-разных интересных можно нахватать... Неужели это один из них?

Да, забыл еще сказать. В свойствах у задачи потока данных стоят FailParentOnFailure=True и FailPackageOnFailure=True.
27 дек 12, 23:32    [13697913]     Ответить | Цитировать Сообщить модератору
 Re: dtsx-пакет после развертывания работает неправильно!  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
topic starter
На моем компе запускаю из-под MS Visual Studio 2008, версия 9.0.30729.4462 QFE.

На сервере запускаю сейчас через dtexec. Вот плохо, что сервак у нас до сих пор голый, все никак не соберусь пропатчить.
SELECT @@VERSION
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)
На компе нужно тоже посмотреть версию клиента сиквела.

Это смотрится в MS Visual Studio 2008 в меню Help - About
Там есть строка "Microsoft SQL Server Integration Services Designer"

Как я понимаю, 9.0.30729.4462 QFE должна соответствовать сиквелу сборки 10.50.2500.0

Т.е. на компе у вас версия новее, так что сервис паки действительно на сервер лучше поставить.

Ещё можно проверить, запустив пакет из BIDS на сервере.

Ну и пакет нужно смотреть, реакцию на ошибки. Его вообще вы писали, или кто то другой? А то там много мест, где можно ошибки заглушать, например, в обработчиках событий.
27 дек 12, 23:54    [13697979]     Ответить | Цитировать Сообщить модератору
 Re: dtsx-пакет после развертывания работает неправильно!  [new]
topic starter
Member

Откуда:
Сообщений: 245
Сейчас еще немного поэкспериментировал.

Не только в свойствах у задачи потока данных, но и в свойствах контейнера "цикл по каждому элементу" поставил FailParentOnFailure=True и FailPackageOnFailure=True.
Результат нулевой: по-прежнему на сервере проскакивает через битый файл №2 и переходит к файлу №3.

Потом попробовал вообще убрать датафлоутаск, и вместо него поставил следуюший скрипт, генерирующий ошибку "деление на ноль":
        public void Main()
        {
            int z = 0;
            int n = 5;
            int m = n / z;
            Dts.TaskResult = (int)ScriptResults.Success;
        }

...и вуаля, при запуске на сервере имеем System.DivideByZeroException - и выполнение пакета прервано.

Получается, какие-то ошибки игнорируются средой выполнения, а какие-то нет.
28 дек 12, 00:02    [13697992]     Ответить | Цитировать Сообщить модератору
 Re: dtsx-пакет после развертывания работает неправильно!  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
topic starter
.и вуаля, при запуске на сервере имеем System.DivideByZeroException - и выполнение пакета прервано.
Ну вот, важная стадия отладки пройдена - теперь по крайней мере точно известно, что вы запускаете на сервере именно этот пакет. :-)
28 дек 12, 00:11    [13698016]     Ответить | Цитировать Сообщить модератору
 Re: dtsx-пакет после развертывания работает неправильно!  [new]
topic starter
Member

Откуда:
Сообщений: 245
alexeyvg, спасибо за советы! Сервер я сейчас экстренно пролечу (как раз все юзеры наконец-то ушли с него), и начну методично по пунктам выполнять ваши рекомендации.

Версию клиента сиквела на моем компе что-то не удалось увидеть в студии в окне About.

alexeyvg
Ну и пакет нужно смотреть, реакцию на ошибки. Его вообще вы писали, или кто то другой? А то там много мест, где можно ошибки заглушать, например, в обработчиках событий.

Пакет целиком мой. Я ж говорю, специально перед тем как на форум писать, сделал маленькую тестовую версию пакета. Облегченную, чтобы только поведение воспроизвести. Там никаких обработчиков нет, кроме OnPreExecute на датафлоутаске.
28 дек 12, 00:12    [13698017]     Ответить | Цитировать Сообщить модератору
 Re: dtsx-пакет после развертывания работает неправильно!  [new]
topic starter
Member

Откуда:
Сообщений: 245
alexeyvg
важная стадия отладки пройдена

Хоть это радует :-)
28 дек 12, 00:14    [13698022]     Ответить | Цитировать Сообщить модератору
 Re: dtsx-пакет после развертывания работает неправильно!  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31780
topic starter
Версию клиента сиквела на моем компе что-то не удалось увидеть в студии в окне About.
Там много строк, можно не заметить :-) Там в окошке список версий всех установленных компонентов, их может быть несколько десятков.

Нажмите кнопку "копировать", потом вставьте текст в любой текстовый редактор и поищите слово Integration.
topic starter
alexeyvg
Ну и пакет нужно смотреть, реакцию на ошибки. Его вообще вы писали, или кто то другой? А то там много мест, где можно ошибки заглушать, например, в обработчиках событий.

Пакет целиком мой. Я ж говорю, специально перед тем как на форум писать, сделал маленькую тестовую версию пакета. Облегченную, чтобы только поведение воспроизвести. Там никаких обработчиков нет, кроме OnPreExecute на датафлоутаске.
Понятно. Я просто имел в виду, что можно не знать о каких то настройках, которые сделал другой человек...

Баги конечно могут быть в поведении разных тасков, так что да, нужно накатить сервис-паки, потом смотреть...
28 дек 12, 08:18    [13698365]     Ответить | Цитировать Сообщить модератору
 Re: dtsx-пакет после развертывания работает неправильно!  [new]
topic starter
Member

Откуда:
Сообщений: 245
Уррра, чудо все-таки случилось. Глюк исчез моментально и бесследно сразу же после установки SP1 на SQL Server.
+
Вот кой черт я целый год задницу не мог оторвать от дивана, чтобы своевременно сервер пропатчить?!..

alexeyvg, еще раз спасибо, и с меня виртуальное угощение! Ну, и с наступившим вас :-)
3 янв 13, 01:32    [13717998]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить