четверг, 26 июля 2012 г.

Автоматический запуск пакетов SSIS по нестандартному расписанию.

Что мы имеем в наличии: хранилище данных с большим количеством таблиц (>100), которое обновляется путем импорта данных из внешнего источника данных (ERP). Для импорта таблиц создано несколько пакетов. Для небольших таблиц существуют только пакеты полной загрузки (т.е. удаление данных в таблице хранилища и загрузка всех данных) для больших таблиц (>50 млн записей) существуют как пакеты полной загрузки так и пакеты инкрементальной загрузки (удаляются данные за определенный период и заново загружаются из источника). Для удобства создано 3 пакета, в которых объединены пакеты по таким признакам:
1 пакет - все пакеты, которые осуществляют только полную загрузку таблиц
2 пакет - все пакеты, которые осуществляют инкрементальную загрузку больших таблиц
3 пакет - все пакеты, которые осуществляют полную загрузку больших таблиц
Каждому пакету полной загрузки из группы 2 соответствует пакет инкрементальной загрузки из группы 3.
Задача: настроить ежедневную автоматическую загрузку хранилища. В определенные дни нужно осуществлять полную загрузку, а в остальные инкрементальную. Должна быть возможность запускать полную загрузку в любой день при необходимости.

среда, 25 июля 2012 г.

Баг в компоненте Sort Transformation в SSIS 2008

Если вы используете в своих пакетах трансформации типа  Merge Join Transformation и Merge Transformation, то иногда приходится пользоваться компонентом Sort Transformation. Компонент этот довольно медленный и рекомендуется избегать его применения. Я в своих проектах очень редко пользуюсь такими трансформациями и стараюсь реализовать логику с помощью запросов (кстати, микрософт рекомендует именно так работать). Чем это лучше использования трансформаций? Во первых, запросы выполняются на сервере, во вторых, при соединениях таблиц используются оптимизационные механизмы сервера. В результате весь процесс работает быстрее.

Использование XML конфигурации в SSIS в картинках

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

1. Есть два сервера: тестовый и основной. Есть компьютер разработчика.
Создаем на каждой из этих машин папку SSIS_Config на диске C:\ (Из соображений, что такой диск будет на всех
машинах).

2. У нас есть 3 базы данных, которые используются пакетами SSIS

Картинка 1

вторник, 24 июля 2012 г.

Использование XML конфигурации в SSIS

Самая типичная организация работы системы BI - это наличие минимум двух серверов баз данных. Один - тестовый, второй  - основной. В идеальном случае эти сервера должны быть одинаковы. Тогда при тестировании решений на тестовом сервере можно видеть как система будет работать на основном. При разработке решений SSIS в среде с несколькими серверами необходимо использовать механизм конфигураций. Чаще всего используются 2 типа конфигураций: SQL server и XML.

Проблема с импортом плоского файла (flat file) в SSIS 2008

Задача: перенести несколько пакетов DTS (MSSQL 2000) на SSIS MSSQL 2008.
Учитывая то, что нормального мастера для переноса DTS пакетов в SSIS не существует, приходится такую работу делать вручную, т.е. строить новые пакеты с такой же функциональностью.

В пакете, который мне нужно было перенести, информация из текстового файла импортируется в таблицу базы данных. Импорт в DTS работает точно так же, как и импорт Excel - открываешь файл, указываешь разделители столбцов и строк, кодировку и тд и в результате получаешь нужные данные. По тому же пути пошел, когда начал создавать SSIS пакет: первым делом необходимо настроить Flat file connection. При настройке обнаружилось, что конекшн видит меньше столбцов чем есть на самом деле. Сначала я подумал, что механизм обрабатывает первую строку и на ее основании формирует описание столбцов. Но оказалось все по другому. Оказалось, что если в строке файла недостаточное количество разделителей (т.е. разное количество во всех строках), то импорт будет работать некорректно.