SQL Server Integration Services (SSIS) — Описание служб интеграции

В состав Microsoft SQL Server входит компонент SQL Server Integration Services, и сегодня мы узнаем, для чего нужен этот компонент, а также рассмотрим его основные возможности.

Как Вы, наверное, знаете, Microsoft SQL Server включает не только основной компонент Database Engine, но и много других полезных компонентов, например, ранее мы с Вами рассмотрели SQL Server Reporting Services — это полноценный компонент создания и публикации отчетов. Сейчас на очереди у нас службы Integration Services, которые являются также очень полезными и важными. Итак, давайте приступать.

Скриншот 1

SQL Server Integration Services

SQL Server Integration Services (SSIS) – это компонент Microsoft SQL Server, который предназначен для автоматизации извлечения, трансформации и консолидации данных из всякого рода источников в другие источники данных. Также службы Integration Services можно использовать и для автоматизации других процессов, например, задач связанных с обслуживанием баз данных или каких-то действий с файлами в операционной системе, в общем SSIS может выступать в качестве своего рода платформы по автоматизации практически всего. И это на самом деле так, например, я, когда впервые узнал о том, что можно сделать с помощью пакета SSIS был удивлен. Поэтому предлагаю сначала рассмотреть основные возможности SQL Server Integration Services, чтобы Вы примерно понимали, на что способен SSIS, все, конечно же, мы не рассмотрим, но общие моменты затронем, а затем перейдем к обзору функционала и инструментов, которые используются в SQL Server Integration Services.

Примечание! Все приведенные ниже возможности, а также функционал и инструменты по работе с SSIS рассматриваются на примере версии Microsoft SQL Server 2008 R2 в новых версиях, конечно же, возможностей стало больше, а функционал и инструменты стали лучше.

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

  • С помощью SSIS можно осуществлять простой импорт и экспорт данных из одного источника в другой. Для этих целей Microsoft даже разработал специальный отдельный инструмент, т.е. своего рода «Мастер», который выполняет эти действия максимально просто. О нем мы разговаривали в материале «Средство импорта и экспорта данных в MS Sql 2008». И если кто помнит, в одном из последних окон там предлагается сохранить все действия в пакет SSIS, для того чтобы потом его можно было редактировать и выполнять. Другими словами, все что умеет «Мастер импорта и экспорта» можно автоматизировать через пакет SSIS;
  • Автоматизация простого импорта и экспорта — это конечно хорошо, но службы Integration Services способны гораздо на большее. Допустим, Вам необходимо осуществить сбор информации (выгрузить данные) из нескольких источников, разных, т.е. например, из MS SQL Server, из какой-то базы Access, из парочки текстовых файлов и других. Затем необходимо эти данные преобразовать, объединить, отфильтровать и разбить по назначению, например, каждому пользователю нужно предоставить только ту часть информации, за которую отвечает именно он. А потом все это выгрузить, причем в том формате, который удобен конкретному пользователю, к примеру, одному удобно работать в Excel, а другой, продвинутый пользователь, хочет видеть эти данные в Access. И в итоге разложить эти файлы по папкам, которые указали пользователи. Все это можно сделать внутри одного пакета SSIS. И этот пакет можно расширять, все зависит от Ваших потребностей. Вот другая ситуация, когда SSIS будет очень полезен и сэкономит достаточно много времени, допустим, Вам необходимо организовать заполнение некого хранилища данных на постоянной основе из различных источников данных. SQL Server Integration Services поддерживает очень много разных источников данных, с которыми он может установить связь, например, конечно же, вышеуказанные SQL Server, базы Access, файлы Excel, XML, текстовые файлы и другие (подробней об этом можно почитать в электронной документации по SQL Server);
  • В пакет SQL Server Integration Services можно включать задачи по запуску исполняемых файлов (exe) или пакетных файлов (bat) что, как Вы понимаете, позволяет автоматизировать задачи вообще не связанные с импортом и экспортом данных. Например, у Вас возникла необходимость запустить одну программу, которая будет выполнять некие вычисления, а когда она завершит свою работу запустить другую программу, а когда и она завершится, то третью ну, в общем, возможность запускать программы из пакета есть, а как использовать ее решать, конечно, Вам;
  • SQL Server Integration Services позволяет выполнять задачи связанные с обслуживанием баз данных, т.е. функции администрирования. Для этих целей в SSIS даже создан специальный блок «Задачи плана обслуживания», в который включены такие задачи как: резервное копирование базы дынных, сжатие базы данных, очистка журнала, обновление статистики, перестроение индекса и другие. Другими словами, если у Вас есть подобные задачи, и они у Вас не автоматизированы, Вы можете автоматизировать их, используя пакеты SSIS;
  • С помощью служб Integration Services можно получить доступ к объектам и данным SQL сервера и соответственно выполнять над ними операции, например, вставки, удаления или изменения данных. Другими словами, из пакета SSIS можно выполнять SQL инструкции или хранимые процедуры;
  • SSIS умеет работать и с файловой системой, т.е. выполнять операции связанные с файлами и каталогами, например, создавать, копировать, перемещать или удалять файлы и папки. Допустим, Вам необходимо автоматизировать процесс копирования каких-то файлов на постоянной основе, это можно сделать как с помощью простых bat файлов, так и с помощью пакетов SSIS.
  • В SQL Server Integration Services есть возможность отправлять сообщения электронной почты. Например, Вы хотите получать письмо об успешном или неуспешном завершении той или иной задачи.

Как Вы понимаете это далеко не полный список возможностей служб Integration Services, но главной возможностью и особенностью является то, что все вышеперечисленное можно комбинировать в одном пакете. Иными словами, Вы можете создать пакет SSIS, в котором допустим, Вы сначала делаете резервную копию базы данных, а также других источников (например, файлов Excel). Затем запускаете хранимую процедуру, которая обновляет данные в базе SQL сервера, потом осуществляется выгрузка данных из всех этих источников, происходит их объединение и доставка этих данных в удобном формате пользователю, а для того чтобы пользователь узнал, что его данные подготовлены отправить ему письмо по электронной почте. По моему мнению, возможностей SSIS более чем достаточно.

Функционал SQL Server Integration Services

Параметры

В SQL Server Integration Services есть функционал, который позволяет запускать пакеты с параметрами, т.е. мы можем присвоить значения свойствам внутри пакета. Другими словами, мы можем влиять на процесс выполнения пакета, при этом, не изменяя сам пакет. Например, для выгрузки из базы данных нам необходимо знать путь к папке, в которую необходимо положить саму выгрузку, так вот, этот путь мы можем передавать в качестве параметра.

Циклы

Службы Integration Services позволяют организовать повторяющийся поток действий в пакете, т.е. цикл. В SSIS есть два вида цикла, которые оформлены в виде контейнера, это «Цикл по элементам», он работает аналогично структуре цикла For и «Цикл по каждому элементу», т.е. своего рода цикл Foreach. Циклы мы можем использовать, например, тогда, когда нам необходимо выполнить одну задачу определённое количество раз и только потом перейти к выполнению другой задачи. Или, например, используя цикл по каждому элементу, мы можем сделать что-то с каждым файлом в папке.

Переменные

В пакете SSIS можно использовать переменные, т.е. в процессе выполнения пакета мы можем хранить какие-то временные значения в переменных и использовать их, например, в задачах или контейнерах. Переменные нам могут пригодиться, например, для передачи в SQL инструкцию параметра, который будет формироваться динамически или, например, в цикле для управления итерацией или в задаче «Производный столбец» в процессе преобразования потока данных.

В службах Integration Services существует два типа переменных: пользовательские и системные. Пользовательские переменные — это те, которые мы с Вами можем создавать, а системные переменные — это те, которые определяются службами Integration Services. Например, к системным переменным относится StartTime, она хранит время, когда был запущен пакет или UserName, которая показывает имя учетной записи пользователя, запустившего пакет.

Расширение функционала с помощью скриптов на Visual Basic или C#

SQL Server Integration Services позволяет расширять стандартные возможности путем написания скриптов на языках программирования Visual Basic или C#. Другими словами, если встроенных задач SSIS Вам мало, Вы можете написать собственную задачу. Для этого есть встроенная задача «Сценарий», которая позволяет писать скрипты на Visual Basic или C# в среде Visual Studio, при этом все возможности предоставляемые платформой Microsoft .NET Framework также будут доступны.

Транзакции в пакете

Для обеспечения целостности данных в SSIS есть механизм транзакций, который позволяет фиксировать или откатывать все изменения, произведенные в процессе выполнения задач включенных в транзакцию. Например, в пакете выполняется несколько задач связанных с обновлением данных, мы можем объединить эти задачи в транзакцию, и в этом случае они будут считаться единым целом, т.е. результат этих двух задач будет один, либо успешный, и все изменения сохраняются, либо неудачный, и все изменения отменяются.

Точки сохранения

В службах Integration Services пакет можно настроить таким образом, чтобы он использовал точки сохранения (контрольные точки). Механизм следующий, если пакет настроен на использование контрольных точек, то сведения о выполнении пакета записываются в специальный файл, и он используется при перезапуске давшего сбой пакета, для того чтобы запустить пакет с момента сбоя. Если выполнение пакета завершено успешно файл контрольных точек удаляется, а затем при новом запуске создается повторно.

Например, у Вас есть несколько задач, которые выполняют загрузку большого объема данных, и допустим, одна задача выполнилась успешно, при этом она работала, скажем, пару часов, а в момент выполнения второй задачи произошёл обрыв связи. Если использовать точки сохранения, то в случае устранения поломки ждать два часа пока выполнится первая задача, не придется, так как пакет знает, что она уже успешно завершилась.

Отслеживание и перехват ошибок

В ходе выполнения пакета SSIS могут возникнуть непредвиденные ошибки, в связи с этим службами Integration Services предусмотрен функционал отслеживания и перехвата ошибок. Другими словами, в случае возникновения в пакете какой-то ошибки, мы можем ее отследить и передать управление другой задаче или обработчику этого события, для того чтобы пакет аварийно не завершился, а отработал корректно.

Журналирование

Для того чтобы быть в курсе всего того, что происходят внутри пакета, в SQL Server Integration Services есть функционал, позволяющий вести журнал, который будет фиксировать все события в процессе выполнения пакета. В SSIS предусмотрено несколько вариантов ведения журнала, например, записывать все в текстовом или XML файле, или, например, в журнале событий Windows, и, конечно же, есть вариант сохранять записи журнала в базе SQL Server.

Инструменты для работы с SQL Server Integration Services

Давайте рассмотрим несколько инструментов и программ, которые входят в состав служб Integration Services.

Служба SQL Server Integration Services

Это служба Windows, которая и выполняет обработку пакетов. На компьютер ее можно установить только в одном экземпляре.

Среда SQL Server Business Intelligence Development Studio

BIDS – это графическая среда для разработки пакетов. Процесс разработки пакета SSIS — это своего рода визуальное программирование, т.е. вся логика пакета, будет отображена графически. Среда Business Intelligence Development Studio служит как раз для программирования пакетов SSIS.

Скриншот 2

Среда SQL Server Management Studio

С этой средой я думаю, Вы уже знакомы, в службах Integration Services она выступает в качестве инструмента управления пакетами, а также инструментом наблюдения, т.е. в ней можно увидеть какие пакеты в данный момент выполняются. Также с помощью Management Studio можно запускать, импортировать, экспортировать пакеты и создавать каталоги в файловой системе для их хранения.

Скриншот 3

Программы командной строки

Запускать пакеты, а также управлять ими можно из командной строки для этого служат следующие программы:

  • dtexec – программа для запуска пакетов;
  • dtutil – программа для управления пакетами.

На этом все, надеюсь, материал был полезен, удачи!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.