Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

2006 г.

Новые возможности SQL Server 2005 Integration Services

Mark Chaffin, Brian Knight
Опубликовано: Апрель 2005

НазадДалее

Логическая группировка задач
Еще одной полезной особенностью Редактора Control Flow является группировка задач. Если необходимо графически свернуть несколько задач в одну, то можно выбрать эти задачи и в появившемся при нажатии на правую кнопку мыши меню выбрать операцию Group. Это приведет к созданию логического контейнера содержащего выбранные задачи. Единожды созданную группу можно сворачивать в одну задачу, что очень полезно в сложных пакетах. В отличие от контейнерных объектов группировка никак не влияет на выполнение, протоколирование, область видимости переменных или на что-нибудь еще. Она служит только для целей графического отображения.

На Рисунке 20 показан SSIS пакет, который перед загрузкой данных должен очистить таблицу и файл в системной директории. Однако мы пожелали логически сгруппировать эти две задачи в один контейнер по имени Cleanup.

Рисунок 20

Сначала нужно выбрать задачу по имени Truncate Source 1 Staging Tables, затем другую задачу. Это можно сделать, либо удерживая нажатой клавишу Crtl и поочередно нажимая кнопку мыши на каждой задаче, либо выделив мышкой всю область, включающую обе задачи. Теперь можно нажать правую кнопку мыши для доступа к контекстному меню и выбрать в нем пункт Group, как показано на Рисунке 21.

Рисунок 21

SSIS создаст из этих двух задач одну логическую группу по имени Groupbox. Можно нажать кнопку мыши на имени группы и поменять его на Clean Up, как это показано на Рисунке 22. Также можно изменить ее размер, чтобы он наилучшим образом подходил для пакета.

Рисунок 22

Примечания
Если даже после логического группирования пакет все еще выглядит сложно для интуитивного понимания, или есть желание документировать какие-то его особенности, то можно добавить текстовые примечания непосредственно в тело пакета. В любом месте, куда хочется поместить текстовое окно, нужно нажать правую кнопку мыши и в меню выбрать Add Annotation. Редактор создаст текстовое окно, в котором можно непосредственно печатать и размер которого может менять по своему усмотрению. Также можно изменить шрифт, его размер и цвет, если, выбрав окно примечания, нажать правую кнопку мыши и выбрать в меню пункт Set Text Annotation Font. Также можно добавлять примечания и в Редакторе Data Flow, который мы рассмотрим ниже. На Рисунке 23 показан пример текстового примечания.

Рисунок 23

Менеджеры соединений
Закладка в нижней части Редактора Control Flow содержит все соединения данных, которые могут использовать как поток управления, так и поток данных. На эти соединения можно ссылаться как на источники, так как и на приемники в любых операциях потока данных. Они могут быть соединениями, как с реляционной базой данных, так и с базой Analysis Services, или плоским файлом, или любым другим источником данных.

При создании нового пакета он не имеет соединений. Можно создать соединения, если нажать правую кнопку мыши в области Connections и выбрать подходящий тип соединения, как это показано на Рисунке 24. Существует несколько типов соединений, которые мы рассмотрим далее в данной статье. После того, как соединение создано, его можно переименовать для соблюдения принятых правил именования или с целью лучшего описания характера этого соединения.

Рисунок 24

Переменные
Одно из вспомогательных в режиме редактирования окон отображает список переменных. Переменные используются в пакете для передачи значений между задачами и для динамического управления ходом выполнения пакета. Окно Variables (см. Рисунок 25) отображает имя, область видимости, тип данных и значение переменной.

Рисунок 25

Главное отличие глобальных переменных в DTS 2000 и переменных в SSIS заключается в том, что в SSIS переменные имеют область видимости. Область видимости позволяет привязывать переменные к пакетам и объектам, более определенным и управляемым способом.

Каждый пакет, задача, обработчик событий и контейнеры For Loop, For Each Loop, и Sequence могут иметь свои переменные, которые доступны только в соответствующей им области видимости. Это означает, что и в задаче Execute SQL и в контейнере For Loop можно одновременно объявить переменные с одинаковыми именами, ссылаться на которые, однако сможет только соответствующий объект.

Более подробно об использовании переменных рассказано в последующих разделах.

Редактор Data Flow
Редактор Data Flow управляет всеми перемещениями и преобразованиями данных между источником и приемником. Для добавления потока данных в пакет надлежит вручную добавить задачу Data Flow в Редакторе Control Flow. Или позволить это сделать самому SSIS при открытии окна Редактора Data Flow. Внутри себя задача Data Flow содержит все перемещения и преобразования данных. Хотя Data Flow и является лишь логическим контейнером для шагов по перемещению и преобразованию данных, но если один их этих шагов заканчивается ошибкой, то и вся задача Data Flow заканчивается ошибкой (если, конечно, для потоков данных задана установка Fail Component). На Рисунке 26 показан пример параллельного потока данных.

Рисунок 26

Пакет может содержать несколько задач Data Flow. Внутри каждой такой задачи фактически может быть несколько "потоков" между источниками и приемниками. Каждый из таких потоков источник-приемник внутри одной задачи Data Flow называется графом. У графа может быть несколько стадий преобразования. Обычно в графе имеются как адаптер-источник, который поставляет данные, так и адаптер-приемник, который потребляет данные. Между этими адаптерами и должны создаваться преобразователи данных. Если при передаче от источника к приемнику данные должны быть изменены, то сделать это можно внутри преобразования. Если данные нужно просто переместить из источника в приемник, то процесс использует путь, который аналогичен ограничениям приоритета в Редакторе Control Flow.

Можно увидеть свойства столбцов пути, если дважды нажать мышкой на стрелку между адаптерами, а затем выбрать на левой панели объект Metadata, как это показано на Рисунке 27.

Рисунок 27

Эти контейнеры потоков управления и данных более подробно рассматриваются в дальнейших главах

Выполнение пакета
До сих пор мы рассматривали только процесс редактирования пакета. Если необходимо выполнить пакет, то можно нажать мышкой на соответствующую иконку на панели инструментов, или нажать клавишу F5, или нажать в меню пункт Start и затем Debug. При этом произойдет переход среды из режима редактирования в режим выполнения. Это выражается в открытии нескольких новых окон, в доступности некоторых новых пунктов меню и элементов панели инструментов и собственно в процессе выполнения пакета. После окончания выполнения пакета BI Development Studio не возвращается сразу же в режим редактирования, но остается в режиме выполнения для того, чтобы разработчики имели возможность проверить значения переменных или просмотреть любой из результатов процесса выполнения. Это также означает, что нельзя изменять сами объекты пакета, но можно изменять переменные и свойства пакета.

Для возврата в режим редактирования можно нажать мышкой иконку Stop в панели инструментов отладчика, или нажать Shift+F5, или выбрать меню Debug, а затем Stop Debugging.

Архитектура
В процессе развития SQL Server 2000 Data Transformation Services в SQL Server 2005 Integration Services архитектура была существенно перестроена для создания более мощной и готовой к задачам извлечения, преобразования и загрузки среды. На Рисунке 28 изображена архитектура SSIS.

Рисунок 28

Компоненты источника данных
Основная область применения SSIS заключается в выборке данных из источника данных, их преобразования и загрузки в другое место. Источники данные представляют собой соединения, которые можно использовать как в виде источников, так и приемников.
Источник данных
Источник данных содержит в себе информацию, которая необходима SSIS для соединения с OLE DB совместимыми системами, например, с SQL Server, Oracle, DB2, или Microsoft Access. Можно также создать соединения с менее распространенными источниками данных, такими как Analysis Services, источниками, основанными на XML, или Microsoft Directory Services. Источники данных можно использовать как во множестве пакетов в рамках проекта Business Intelligence Development Studio, так и в одном единственном пакете. Соединение очень просто создается с помощью диалога Connection Manager, как это показано на Рисунке 29. В этом диалоговом окне Вы можете создать соединение почти для любого типа источника данных. На рисунке показано создание источника данных SQL Server OLE DB. Другие типы соединений могут различаться по внешнему виду и свойствам.

Рисунок 29

Создание соединения в проекте Business Intelligence Development Studio не означает то, что действительно происходит соединение с источником данных. Соединение всегда неактивно до тех пор, пока действительно не начнется его использовать в пакете. Это дает прекрасную возможность разработать большую часть SSIS пакета, находясь далеко от вашей базы данных, например, в аэропорту, а затем развернуть пакет и все его соединения на SQL Server.

Представление источника данных
Представление источника данных (data source view - DSV) это его логическое отображение одного или нескольких источников данных. Проще говоря, это коллекция объектов базы данных (таблиц, представлений и хранимых процедур), которые логически сгруппированы и могут быть использованы во всем проекте. Представления источника данных можно повторно использовать в Analysis Services и в Report Builder.

Представления источника данных очень похожи на реляционные представления SQL Server и являют собой логическое представление модели данных. Это особенно полезно в сложных схемах, например, в системах планирование и управление ресурсами предприятия (ERP) вроде SAP, Seibel, или Peoplesoft. В порядке вещей у производителей подобного программного обеспечения считается правильным разрабатывать это программное обеспечение так, чтобы оно работало в рамках любой компании. Поэтому их огромные модели данных содержат, возможно, тысячи объектов. Столбцы в таких ERP системах имеют очень путаные имена, например, A54210. В такой среде разработке нужно стать поистине экспертом модели данных и тратить много ценного времени на перевод имен столбцов и бизнес-имена. Разумеется, за счет времени отведенного для основной работы.

Как и в случае с системой ERP представления источников данных (DSV) предлагают способ для разделения тысяч объектов на логические группы, например, Бухгалтерия (Accounting), Кадры (Human Resources), и Оборудование (Inventory). И что важнее всего, что это дает возможность назначить каждому столбцу понятное имя, т.е. сразу же отказаться от сбивающих с толку имен наподобие A54210 и сделать их доступными в будущем для всех других инструментов корпоративной среды. Все это уменьшит время выхода на рынок и снизит потребности специалистов по источникам данных в переводе имен столбцов

Необходимо помнить несколько ключевых моментов при работе с представлениями источников данных. Как и источники данных DSV позволяют один раз задать логику соединения и далее использовать ее во всех SSIS пакетах. Однако в отличие от соединений DSV не связаны с соединением-источником и не обновляются при изменениях структуры источника. Например, если в соединение имя таблицы с Employee поменяется на Resources, то DSV не подхватит эти изменения.

Область, в которой такой тип кэширования наиболее полезен - это разработка. DSV позволяют использовать кэшированные метаданных в процессе разработки, даже если Вы находитесь в аэропорту и Ваш компьютер не подключен к сети. Это ускоряет разработку пакетов. А так как DSV в большей степени являются подмножеством действительных данных источника, то и диалоговые окна соединений SSIS открываются гораздо быстрее. Пример того, как выглядит DSV, можно увидеть на Рисунке 30, на котором показано подмножество из базы AdventureWorks. На рисунке можно видеть, что в таблицу Employee к столбцу VacationHour было добавлено понятное имя с пробелом между словами. Это поможет с используемостью данных позднее, когда пользователи начнут использовать пакет или понадобится предоставить данные для Analysis Services.

Рисунок 30

При разработке SSIS пакета, использующего DSV, первый будет продолжать нормально работать, даже если в промышленной среде DSV уже не будет существовать. Это возможно потому, что SQL отображение для DSV привязано к задаче преобразования данных.

Соединения
Соединения в SQL Server Integration Services сильно изменилось со времен DTS. Но вместо того, чтобы привязать соединение к одному DTS пакету, теперь можно сделать соединение, которое доступно всему множеству пакетов проекта. В реальном мире это дает преимущество за счет того, что можно развернуть набор пакетов, которые нужны приложениям из промышленной среды и для указания в соединениях использовать промышленные данные должны изменить только одну установку. В SQL Server 2000 необходимо было открыть каждый пакет и произвести то же действие, но с риском забыть про какое-то из соединений и получить из-за этого проблемы на этапе внедрения.

Даже то, что можно создать внешнее по отношению к пакету соединение, не означает это обязательно нужно делать. По прежнему можно создать соединение внутри SSIS пакета, если предполагается использовать соединение один раз и не желательно вносить беспорядок в проект.

Элементы потока управления

Поток управления есть компонент SSIS, который координирует выполнение и условные переходы в SSIS пакете. Поток управления содержит задачи, которые осуществляют какую-то часть общей работы, например, отсылают файл по FTP, и ограничения, которые соединяют различные задачи в логическом порядке.
Задачи
Как и в SQL Server 2000 задачи являются краеугольным камнем SSIS пакета. Задача SSIS есть объект из Панели Инструментов, который отвечает за выполнения части общей работы. Например, существуют задачи для управления копирования файла и задачи для управления потоком данных.
Архитектура совместного использования
Каждая задача в SSIS имеет набор стандартных свойств. Среда SSIS может быть расширена для управления любой пользовательской задачей, созданной другим производителем или Вами, если эта задача обладает некоторыми стандартными свойствами. Вот некоторые из существенных разделяемых свойств, которыми должна обладать каждая задача:
  • Disable - Если этому свойству установлено значение True, то задача запрещена и не будет выполняться.
  • DelayValidation - Если этому свойству установлено значение True, то SSIS не будет проверять состояние свойств задачи до момента ее запуска. Это полезно в случае, когда работа идет в автономном режиме и необходимо ввести значение, которое невозможно проверить до момента развертывания пакета. По-умолчанию это свойство имеет значение False.
  • Description - Описание производимых данным экземпляром задачи действий. По-умолчанию имеет значение <имя задачи>. Не требует уникальных значений и должно бы давать точно описание действия задачи для тех, кто возможно в вашей операционной группе будут отслеживать действия пакета.
  • ExecValueVariable - Содержит имя пользовательской переменной, в которую будет занесен результат выполнения задачи. По-умолчанию имеет значение <none>, что означает, что результат выполнение не будет присвоен.
  • Fail Package on Failure - Если этому свойству установлено значение True, то выполнение всего пакета будет завершено ошибкой при ошибке выполнения данной задачи. По-умолчанию имеет значение False.
  • Fail Parent on Failure - Если этому свойству установлено значение True, то выполнение задачи-родителя будет завершено ошибкой при ошибке выполнения данной задачи. Задачей-родителем может выступать как пакет, так и контейнер. О контейнерах мы поговорим более подробно позже.
  • ID - Уникальный идентификатор данного экземпляра задачи. ID представляется в виде GUID и выглядит приблизительно так {R438HJI-7DN3-I8EF-NFUF-JF83AFFJ83A}.
  • IsolationLevel - Определяет уровень изоляции транзакции, если транзакции разрешены в свойстве TransactionMode. Возможные значения: Chaos, ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Unspecified. Значение по умолчанию - Serializable.
  • LoggingMode - Определяет тип протоколирования, применяемый для данной задачи. Возможные значения: UseParentSetting, Enabled, and Disabled. Значение по-умолчанию - UseParentSetting, что задает использование того же метода ведения протокола, что установлен для пакета или контейнера.
  • Name - Имя задачи. По-умолчанию имеет значение <task name>. Как и редактор SSIS вы, возможно, тоже пожелаете изменить имя на более удобочитаемое. Имя задачи должно быть уникально в рамках пакета.
  • TransactionOption - Определяет транзакционное свойство задачи. Возможные значения: NotSupported, Supported, and Required. Значение по-умолчанию - Supported, что означает поддержку транзакций в этой задаче.

Теперь, после ознакомления с основными свойствами, видимыми при выборе задачи, можно перейти к рассмотрению тех задач, что можно использовать в SSIS. Не мешало бы заметить, что задача Maintenance Plan также имеется на панели инструментов, но по-умолчанию она скрыта.

Задача Bulk Insert

Задача Bulk Insert (см. Рисунок 31) почти идентична соответствующей задаче из SQL Server 2000 DTS task. Эта задача предоставляет самый быстрый способ загрузки данных в SQL Server из плоского файла в случае, когда не нужно преобразовывать данные. Отличие этой задачи от своей предшественницы из SQL Server 2000 состоит в том, что задача SSIS использует общее соединение-источник. В SSIS в данной задаче нельзя создать файл формата, как это было возможно в DTS задаче. Теперь нужно делать это из консольной утилиты BCP.

Рисунок 31

Задача Data Flow

Те, кто хорошо знаком с SQL Server 2000 DTS не узнают задачу Data Flow из SSIS. Это очень специализированная задача и она работает отлично от других задач. Мы подробно рассмотрим ее в этой статье. Наибольшим достижением архитектуры SSIS является отказ от создания промежуточных таблиц для осуществления таких рядовых задач, как, например, агрегирование данных.

Задача Data Mining Query

Задача Data Mining Query является развитием своей предшественницы из SQL Server 2000. Как и задача из SQL Server 2000 DTS задача Data Mining Query позволяет запускать предикативные запросы к модели добычи данных в Analysis Services. Но в отличии от DTS в SSIS можно сохранить полученный результат в параметр SSIS и также у этой задачи есть входной параметр, который можно задать в виде входной переменной. Например, возможно использовать эту задачу для сохранения результатов запроса в таблицу, которую позже будет использована в потоке управления.

Задача Execute Package

Задача Execute Package (см. Рисунок 32) позволяет запустить пакет внутри родительского пакета. Версия этой задачи из SSIS обладает несколькими замечательными нововведениями. Одно из них состоит в наличии нового свойства ExecuteOutofProcess, которое при установке в True определяет запуск пакета в виде отдельного процесса с отдельной областью памяти. По-умолчанию это свойство как раз и имеет значение True. Это, конечно, требует большего количества памяти, но зато задачи выполняются лучше. Другим ключевым отличием данной версии задачи является отказ от передачи параметров в дочерний пакет. Вместо этого дочерний пакет получает доступ к родительскому пакету и может вытащить конфигурационные значения.

Рисунок 32

Задача Execute Process

Как и свой аналог из SQL Server 2000 задача Execute Process запускает пакетный файл или исполняемый модуль (см. Рисунок 33). Эта задача значительно изменилась в сторону большей гибкости настройки. Например, теперь можно задавать входные переменные, которые будут переданы в процесс, или выходные переменные, в которые будут записаны результаты выполнения. Имеется также выходная переменная для ошибок, которая будут содержать все ошибки, произошедшие во время выполнения процесса. Это позволит более гибко обрабатывать ошибки, чем это было возможно в предыдущей редакции SQL Server.

Рисунок 33

Задача Execute SQL

Задача Execute SQL(см. Рисунок 34) позволяет выполнить реляционные запросы, команды DDL или DML в соединении (и не обязательно в соединении с SQL Server). В SSIS можно хранить текст запроса в виде плоского файла или переменной в дополнение к непосредственно заданному тексту запроса. Это может быть полезно в случае, когда нужно создать процесс установки на основе внешних DDL файлов, или когда нужно создать общую функциональную библиотеку из числа внешних для SSIS SQL файлов. Как и в прошлой версии SQL Server можно легко передавать переменные в запрос и получать их оттуда. Весь результат запроса также можно целиком сохранить в переменную.

Рисунок 34

Задача File System

Эта новая задача SSIS(см. Рисунок 35) позволяет управлять файловой системой, для чего в DTS приходилось писать множество скриптов. В большинстве ETL процессов все множество извлеченных из разных мест файлов необходимо обработать, а затем заархивировать в другой каталог. Перед повторным запуском этого процесса необходимо очистить директорию, содержащую извлеченные файлы.

Задача File System поможет Вам во всех типах операций с файлами, которые были приведены в предыдущем примере ETL процесса. Эта задача может управлять директориями через операции создания, переименования или удаления. Она также может производить такие файловые операции как перемещение, копирование или удаление файлов. Все это в SQL Server 2000 требовало создания детально разработанного скрипта.

Рисунок 35

Задача File Transfer Protocol

Задача File Transfer Protocol позволяет производить файловые операции через протокол FTP. Эта задача является потомком задачи из SQL Server 2000, но обладает многими новыми свойствами. Основной жалобой на задачу File Transfer Protocol из предыдущей версии SQL Server была возможность только получения файлом с помощью FTP. В версии этой задачи в SQL Server 2005 можно по протоколу FTP отправлять, получать файлы, а также создавать директории как локально, так и удаленно. Задача также позволяет регистрировать соединения FTP с помощью FTP Connection Manager Editor так же, как любое другое соединение в SSIS (см. Рисунок 36). Ключевым новшеством является возможность выполнять FTP действия в пассивном режиме. Из-за отсутствия такой возможности в SQL Server 2000 для достижения такого же результата приходилось использовать в качестве замены запуск с помощью задачи Execute Process утилиты FTP.exe.

Рисунок 36

Для задачи можно установить имена удаленной и локальной директорий прямо из переменных внутри SSIS (см. Рисунок 37).

Рисунок 37

Задача Message Queue

Задача Message Queue была значительно усовершенствована по сравнению со своим аналогом из SQL Server 2000. Как и своя предшественница, эта задача может отсылать файлы данных или строковые сообщения в Microsoft Message Queue. В дополнение теперь можно отсылать в очередь и переменные SSIS. Также можно шифровать отсылаемые в очередь данные и использовать сертификаты для аутентификации.

Вся мощь задачи Message Queue (см. Рисунок 38) проявляется в случае, когда используется передача сообщений из пакета в пакет для параллельного выполнения операций. Например, каждый из SSIS может управлять своим сегментом работы, а затем, после окончания подмножества работ, один раз сообщить об этом ведущему пакету. Другая область применения очередей сообщений - это распределенная среда, в которой каждый региональный офис обрабатывает свои данные и отсылает их для обработки на корпоративный сервер через очередь сообщений. Корпоративный SSIS пакет в этом случае слушает все региональные офисы для получения от них подтверждения того, что можно начать агрегирование данных.

Рисунок 38

Задача Script

Для многих разработчиков ETL систем одной из главных причин для миграции из SQL Server 2000 в SSIS может оказаться задача Script (в SQL Server 2000 DTS известная как ActiveX Script). Новая задача Script имеет богатый дизайнерский интерфейс (см. Рисунок 39) в Visual Studio, включая IntelliSense и раскраску ключевых слов в скрипте.

Рисунок 39

Задача Send Mail

Задача Send Mail (см. Рисунок 40) позволяет отсылать сообщения электронной почты пользователям или спискам рассылки. В отличие от аналогичной задачи SQL Server 2000, она теперь использует SMTP, а не MAPI. Это означает, что теперь нет необходимости в установке Microsoft Outlook® на SQL Server для работы этой задачи. Электронное почтовое сообщение можно непосредственно напечатать, используя интерфейс чем-то похожий на Notepad. Также в качестве тела сообщения можно использовать входной файл или переменную DTS.

Рисунок 40

Задача SQL Server Analysis Services Execute DDL

Новая задача SQL Server Analysis Services Execute DDL позволяет выполнить команду DDL для создания, изменения, удаления или обработки объекта Analysis Server. Можно выполнить DDL скрипт хранящийся либо непосредственно в задаче, либо в переменной, либо во внешнем для пакета файле.

Задача SQL Server Analysis Services Processing

Задача SQL Server Analysis Services Processing является потомком задачи Analysis Services Processing из SQL Server 2000, но обладает большими возможностями. Эта задача обрабатывает кубы и измерения Analysis Services, но вдобавок к этому теперь были добавлены уровни параллелизма, позволяющие одновременно обрабатывать множество объектов. Также можно задать каким образом должна происходить обработка ошибок в ваших ключевых полях. Необходимо также отметить, что эта задача не имеет обратной совместимости с кубами и измерениями SQL Server 2000.

Задача Web Service

Новая задача Web Service служит для вызова метода Web службы. После выполнения метода можно сохранять полученные от Web службы результаты в файл или переменную. Это может быть полезно для обмена информацией с программами других производителей. Например, можно использовать Web службу для получения обновленного списка продукции с Amazon. После этого этот список можно сохранить в базу для дальнейшего использования.

Задача Web Service соединяется с Web службой с помощью HTTP Connection Manager. Он позволяет соединяться с Web сайтом через прокси или даже аутентифицироваться на сайте. В задаче Web Service можно указать использовать как внутренний, так и внешний Web сайт. Также можно задать использовать локальный файл Web Service Description Language (WSDL), содержащий список подлежащих выполнению методов. Если указано использование внешнего Web сайта, то необходимо скопировать WDSL файл на локальный диск.

Web служба, с которой происходит соединение, может требовать или не требовать входные параметры. Эти параметры можно передать в задачу с помощью переменных. Например, можно передать Web службе Amazon-а информацию о категории книг и Amazon может вернуть список новых наименований, уже готовый к отображению. Все это задается в закладке Input задачи. Получение данных конфигурируется в закладке Output, в которой задается, будут ли полученные данные сохранены в переменную или в файл. Если нужно сохранить данные в файл, то придется использовать File Connection Manager.

Задача WMI Data Reader

Windows Management Instrumentation (WMI) является одним из самых тщательно скрываемых секретов Windows. WMI позволяет управлять Microsoft Windows® серверами и рабочими станциями через интерфейс сценариев. Задача WMI Data Reader (см. Рисунок 41) позволяет взаимодействовать с этой средой посредством запросов на языке WMI Query Language (WQL). Например, можно использовать WMI для просмотра журналов Application Event Log. Возвращаемый запросом результат можно сохранить в файл или переменную для дальнейшего использования.

Рисунок 41

Задача WMI Event Watcher

Задача WMI Event Watcher (см. Рисунок 42) помогает SSIS перехватывать и реагировать на соответствующие WMI события, которые происходят в операционной системе. Например, можно указать задаче реагировать на факт записи каким-либо приложением ошибки в системный журнал событий. Либо можно заставить SSIS предпринять какие-то действия после серии событий записи файлов в какую-то директорию. Это очень распространенно в системах ETL. Как и в задаче WMI Data Reader Вы можете опрашивать WMI, используя язык запросов WQL. Текст запроса WQL может быть прочитан из файла или переменной, или может быть непосредственно задан в задаче.

Рисунок 42

Задача XML

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

  • Чтение нескольких XML файлов с их последующим объединением в один.
  • Подготовка XML файла к отчету с применением XSLT преобразования.
  • Выборка частей XML файла с использованием XPATH.
  • Сравнение двух XML файлов с записью разницы в XML DiffGram.
  • Проверка XML файлов на соответствие декларации типов документа (DTD).

Это очень большое диалоговое окно меняется в зависимости от выбранного OperationType. На Рисунке 43 показан вид диалога XML Task Editor в случае, когда нужно использовать задачу для проверки XML файла. Результаты проверки можно сохранить в переменной.

Рисунок 43

Существуют также другие задачи, которые SQL Server использует в своих Maintenance Plans. Они становятся доступными при раскрытии панели задач Maintenance Plan.

Ограничения приоритета
Ограничения приоритета управляют ходом выполнения Вашего SSIS пакета на основе заданных условий. В SQL Server 2005 Integration Services ограничения приоритета были существенно расширены за счет возможности организации циклов.
Тип ограничения
Как и в SQL Server 2000 DTS ограничения приоритета разделяются на три типа:
  • Complete. Ограничение завершения означает то, что следующая задача не запускается до тех пор, пока предыдущая задача не завершится с любым исходом - удачным или неудачным.
  • Success. Ограничение удачного завершения означает то, что следующая задача не запускается до тех пор, пока предыдущая задача не завершится с удачным исходом. Если предыдущая задача завершается неудачно, то все последующие задачи данной ветви не будут выполнены.
  • Failure. Ограничение неудачного завершения означает то, что следующая задача не запускается до тех пор, пока предыдущая задача не завершится с неудачным исходом. Данное ограничение обычно используют для оповещения о сбое по электронной почте.
Условные ограничения
Существенным новшеством в работе ограничений приоритета стала возможность задания условных выражений при соединении задач в цепочку или даже их зацикливание до выполнения заданного условия. Ниже в данной главе дано множество примеров использования этой возможности.

Вычислительные операторы

Вычислительные операторы дают разработчику возможность создать настоящий цикл обработки внутри пакета на основе условного управления потоком задач. После создания условия ограничения можно задать его свойству EvalOp одно из следующих значений, определяющих критерий вычисления ограничений приоритета:

  • Constraint. Это значение по-умолчанию при котором вычисляется только само ограничение.
  • Expression. В этом случае вычисляется только выражение.
  • ExpressionAndConstraint. Перед переходом к следующей задаче вычисляются как выражение, так и ограничение.
  • ExpressionOrConstraint. Для перехода к следующей задаче либо выражение, либо ограничение должны быть выполнены.

Логическое вычисление

Последнее свойство, про которое стоит упомянуть для ограничений приоритета - это свойство LogicalAnd. Это свойство управляет запуском следующей задачи при ее зависимости от результатов запуска множества задач. По-умолчанию это свойство имеет значение True, что обеспечивает вычисление всех множественных ограничений вместе как единое выражение AND, если использовать понятия SQL.

Контейнеры
Контейнеры являются базовыми компонентами архитектуры потока управления и объектной модели SSIS. Они помогают логически группировать задачи в отдельные рабочие блоки или создавать сложные условия. Существует четыре типа контейнеров: TaskHost, Sequence, ForLoop, ForEachLoop. Они позволяют:
  • Сгруппировать ограничения приоритета так, чтобы группа задач обязательно была успешно (или неуспешно) выполнена перед запуском другой задачи.
  • Циклически выполнять последовательность задач до достижения определенного условия.
  • Циклически выполнять последовательность задач для каждого элемента какой-либо коллекции.

Контейнер Task Host

Контейнер TaskHost является основным контейнером для единичной задачи. Если не указано для задачи другого контейнера, то она будет помещена в контейнер TaskHost. Архитектура SSIS предоставляет задаче переменные и обработчики событий именно через контейнер TaskHost.

Контейнер Sequence

Ограничения последовательности управляют потоком подмножества пакета и помогают логически поделить пакет на более мелкие управляемые части. Вот примеры того, где можно использовать Sequence контейнер:

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

Контейнер Sequence выглядит точно также как и другие задачи в Controller Flow. После перетаскивания контейнера Sequence из Панели Инструментов, можно поместить в него задачи. На Рисунке 44 показан пример из двух контейнеров. Левый контейнер является контейнером Sequence, который содержит две задачи и должен завершиться успешно для того, чтобы смог запуститься контейнер For Each Loop. Последний контейнер мы сейчас и рассмотрим более подробно.

Рисунок 44

Контейнер For Loop

Контейнер For Loop организует цикл по всем задачам до достижения заданного условия. Например, как показано на Рисунке 45, задача Send Mail выполняется четыре раза. Хотя этот пример может показаться неактуальным, он показывает мощь контейнера For Loop. Данный контейнер может содержать также и другие контейнеры для создания вложенных циклов.

Рисунок 45

Три основных элемента задачи изображены на Рисунке 46. Первый из них это параметр IntExpression, с помощью которого задается начальное значение параметра. Параметр EvalExpression определяет условие, которое служит сигналом механизму выполнения SSIS для выхода из контейнера For Loop. И, наконец, необязательное свойство AssignExpression задает шаг приращения того параметра, что был ранее задан в свойстве InitExpression.

Рисунок 46

Наиболее практичным способом использования данного контейнера является циклическое выполнение задачи WMI Event Watcher или задачи Message Queue для поиска событий. Например, в задаче Message Queue можно ожидать пока группа пакетов другого сервера не зарегистрирует факт завершения работы, чтобы пакет смог продолжить выполнение следующего набора задач. Для этого, можно организовать цикл по задаче Message Queue с помощью контейнера For Loop и ждать пока задача Message Queue не запишет в переменную SSIS значение, которое будет означать успешное завершение других пакетов. Затем с помощью ограничения приоритета On Success можно направить выполнение пакета по следующей ветке.

Контейнер Foreach Loop

Наиболее необычным из новых контейнеров является Foreach Loop. Этот контейнер может сберечь разработчикам традиционных DTS больше всего времени. Контейнер Foreach Loop позволяет разработчикам SSIS организовать цикл по коллекции файлов, записям набора Microsoft ActiveX® Data Objects (ADO), переменным и выполнить последовательность задач.

Очень часто примеры того, как можно использовать контейнер Foreach Loop, можно почерпнуть в процессах ETL. Там, где создавался пакет для цикла по всем файлам директории и запуска для каждого извлеченного файла дочернего пакета. В SQL Server 2000 DTS все это требовало изрядного количества кода в задаче ActiveX Script. В SSIS же все, что нужно, это создать контейнер и задать ему свойство Enumerator в For Each File Enumerator, как это показано на Рисунке 47. Затем в разделе Enumerator Configuration указывается каталог, по которому будет проходить цикл и тип файла. Если нумератор обнаружит файл, то он может присвоить его имя в соединение или переменную SSIS, что можно использовать для динамического запуска пакета внутри цикла.

Рисунок 47

Отображаемая на закладке Collection информация меняется в зависимости от значения свойства Enumerator. Вот некоторые из возможных значений нумератора:

  • For Each File Enumerator организует цикл по коллекции файлов для которых нужно выполнить какие-либо действия.
  • For Each ADO Enumerator организует цикл по коллекции записей набора ADO. Этот набор должен храниться в переменной пакета.
  • For Each From Variable Enumerator организует цикл по переменным пакета.
  • For Each NodeList Enumerator организует цикл по XML файлу и требует XPATH информацию.
  • For Each SMO Enumerator организует цикл по объектам SQL Server любого уровня.

В процессе выполнения цикла по коллекции контейнер будет присваивать значение из коллекции задаче или соединению внутри контейнера, как это показано на Рисунке 48. Также можно поместить это значение в переменную.

Рисунок 48


НазадДалее
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...