Архитектура совместного использования
Каждая задача в 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.