SQL Server 2000 DTS. Часть 4. Задачи в DTS Designer

ПУБЛИКАЦИИ  

По материалам статьи Marcin Policht: SQL Server 2000 DTS Part 4 - DTS Designer Tasks

В предыдущей статье о SQL Server 2000 Data Transformation Services мы рассмотрели первый основной компонент DTS пакета - Подключение. Теперь пришло время изучить другой критически-важный компонент - Задача (Task), которая предназначена для процессинга данных, полученных через Подключение. Задачи помечены разными значками в окне DTS Designer с названием Tasks и могут быть легко добавлены к пакету, путём простого перемещая их курсором мыши в окно пакета. Большинство из задач требуют наличия уже существующего в пакете подключения или нескольких подключений, если это необходимо.
В SQL Server 2000 DTS существует 17 предопределённых задач разной степени сложности. В этой статье мы рассмотрим 11 относительно простых задач, а описание остальных будет продолжено в следующей статье:

1. Bulk Insert task - исполняет функцию "обёртки" для T-SQL команды BULK INSERT, и её целью является быстрый импорт данных из текстового файла с разделителями полей в таблицу базы данных SQL Server. При настройке параметров этой задачи Вы можете указать разделители строки и полей или формат файла. Главный недостаток этой задачи - её слабая гибкость. В частности, во время импорта нельзя выполнять трансформацию данных (если это необходимо, Вы можете использовать Transform Data task, который мы рассмотрим позже). Кроме того, нельзя повлиять на отображение полей, т.е. порядок и тип полей в текстовом файле и в таблице должны совпадать. Передача данных может быть выполнена только из текстового файла в SQL Server. Используя закладку Options диалогового окна Bulk Insert Task Properties, которое вызывается двойным щелчком по значку задачи, Вы можете установить несколько дополнительных T-SQL параметров для BULK INSERT, например: проверка ограничений (CHECK_CONSTRAINTS), разрешение вставки значений identity (KEEPIDENTITY), число копируемых строк (FIRSTROW и LASTROW), тип файла данных (DATAFILETYPE) или размер блока (BATCHSIZE).

2. Copy SQL Server Objects task - выполняет копирование объектов между двумя базами данных, например: таблиц (включая данные), представлений, хранимых процедур, ограничений, триггеров, индексов, пользователей, ролей, логинов, первичных и внешних ключей, а так же разрешений этих объектов. Не стоит использовать эту задачу только для того, чтобы копировать данные, т.к. для этого более эффективен Transform Data task. Кроме того, если нужно копировать всю базу данных, лучше использовать Copy Database Wizard или Transfer Databases task (который мы рассмотрим позже). Не смотря на то, что исходная база данных не должна быть доступна пользователям во время операции копирования (в отличие от Copy SQL Server Objects task), эта задача хороша тем, что работает очень быстро.

3. Execute Process task - выполняет указанную Win32 - программу или пакетный файл. Для них Вы можете определить параметры запуска, время блокировки (по истечении которого процесс будет прерван) и код возврата (целочисленное значение, указывающее на успешность исполнения). Процесс выполняется в контексте безопасности учетной записи, под которой был запущен DTS пакет.

4. Execute SQL task - исполняет SQL запрос (включая хранимые процедуры). Запрос может быть разделён на пакеты, разделённые командой GO. Диалоговое окно свойств Execute SQL Task позволяет устанавливать время блокировки, по истечении которого соответствующая задача будет прервана. SQL запрос может быть проверен на правильность его синтаксиса, в нём доступны параметры ввода - вывода и глобальные переменные.

  • Глобальные переменные используются для хранения данных, которые могут быть доступны нескольким компонентам одного пакета или переданы другим пакетам. Так как глобальные переменные пакета хранятся в одном месте, и они могут динамически изменятся в течение исполнения пакета, их использование очень упрощает обслуживание и настройку пакета. Более подробно мы обсудим глобальные переменные в одной из следующих статей.
  • Входные параметры включаются в SQL запрос как вопросительные знаки, после чего их можно привязать к глобальным параметрам в последовательности появления их в запросе, как Parameter 1, Parameter 2 и т.д. Делается это на закладке Input Parameters диалогового окна Parameter Mapping (вызываемого кнопкой Parameters command в диалоговом окне Execute SQL Task Properties). Записи в разделе Parameter Mapping (расположенном на той же самой закладке) определяют, как входные параметры будут отображены на глобальные переменные. Точно так же на вкладке Output Parameters Вы можете задать отображение глобальных переменных на выходные параметры SQL запроса. Выходной параметр может состоять из одной строки или из нескольких строк (rowset), если ваш запрос возвращает множество строк.

Execute SQL task часто применяется после задач выполняющих импорт данных (например, чтобы пересоздать индексы или обновить статистику).

5. File Transfer Protocol task - помогает решать распространённые задачи в смешанных или распределённых системах, где данные должны быть переданы по File Transfer Protocol. В предыдущих версиях SQL Server, это можно было сделать с помощью программ третьих фирм (или специализированными, встраиваемыми решениями). SQL Server 2000 DTS имеет для этого собственные встроенные функциональные возможности.
File Transfer Protocol task создаёт FTP сеанс между Internet (intranet) сайтом или каталогом на сервере и локальной файловой системой. Параметры подключения (имя пользователя, пароль и количество попыток подключения) устанавливаются на закладке Location диалогового окна File Transfer Protocol Properties. На этой же закладке, можно задать путь к каталогу адресата. Как только будет проверено существование получающего данные ресурса и прав доступа к нему, можно перейти на закладку Files и указать файлы, которые необходимо передавать. Пометив чек-бокс Overwrite, Вы можете определить, могут ли файлы быть перезаписаны, если они уже существуют.

6. Send Mail task - позволяет посылать сообщения электронной почты из DTS пакета. Это обычно используется для оповещения о результатах выполнения пакета. Результаты могут быть помещены в тело письма или в прикреплённый к письму файл. До использования этой задачи, на сервер исполнения пакета должен быть настроен профиль для MAPI клиента (например, Outlook). С этим часто возникает путаница, т.к. такой профиль, возможно, должен быть создан для разных учетных записей, в зависимости от того, где пакет будет исполнятся. Это может быть ваша учетная запись, если Вы сами запускаете пакет в интерактивном режиме, но чаще это учётная запись, стартующая службу SQL Server Agent (если запуск пакета осуществляется заданием по расписанию). В последнем случае, зарегистрировавшись на компьютере где установлен SQL Server 2000 под учетной записью SQL Server Agent, нужно указать в свойствах агента соответствующий e-mail профиль.
Создать профили можно в Control Panel, дважды щелкнув по значку Mail. Параметры профиля зависят от типа почтового сервера (например, Microsoft Exchange или Lotus Notes). После создания профиля он появится в диалоговом окне Send Mail Task Properties в списке Profile name. В том же окне, Вы сможете указать получателей сообщения, тему сообщения, текст письма и дополнительные вложения.
Обратите внимание, что то же самое можно сделать в ActiveX Script task (который мы рассмотрим в следующей статье) в комбинации с методами и свойствами Collaboration Data Object model. Главное преимущество такого подхода в отсутствии необходимости иметь локальный MAPI профиль.

7. Transfer Databases task - передаёт базу данных из SQL Server 7.0/2000 на другой SQL Server 2000. Вы можете выбрать, будет ли база данных скопирована или перемещена. Для нового местоположения базы данных Вы можете указать размещение файлов данных и журналов (используя параметры на закладке File Locations диалогового окна Transfer Database Properties). Невозможно передавать таким образом системные базы данных или уже существующие на сервере назначения базы. Эта задача встроена в Copy Database Wizard, который мы уже рассмотрели в предыдущих статьях.

8. Transfer Error Messages task - выполняет специализированную задачу по копированию определяемых пользователем сообщений об ошибках между двумя SQL серверами (включая передачу ошибок из SQL Server 7.0 в SQL Server 2000). Такие сообщения сохраняются в таблицу sysmessages базы данных master и могут добавляться с помощью хранимой процедуры sp_addmessage. Вы имеете возможность копирования всех таких ошибок или только избранных. Задача умеет не копировать те сообщения, которые уже существуют в получающей ошибки базе. Эта задача тоже используется в Copy Database Wizard.

9. Transfer Jobs task - копирует Задания с серверов SQL Server 7.0/ 2000 (хранимые в нескольких таблицах базы данных msdb) на другой SQL 2000 Server. Эта задача настраивается аналогично Transfer Error Message task, описанному выше (Вы можете передавать все или избранные Задания), и так же эта задача используется в Copy Database Wizard.

10. Transfer Logins task - копирует логины SQL Server 7.0/2000 на другой SQL 2000 Server, аналогично предыдущим двум задачам. Она можете копировать все логины или относящиеся только к избранным базам данных, к которым имеющиеся логины имеют доступ. Это означает то, что если Вы выбираете несколько баз данных, то все логины сопоставленные любым ролям в этих базах данных автоматически будут добавлены в список копируемых. Как и предыдущие задачи, эта задача задействована в Copy Database Wizard.

11. Transfer Master Stored Procedures task - передаёт пользовательские хранимые процедуры из базы master SQL Server 7.0/2000 на другой SQL Server 2000. Здесь также Вы можете передавать все или только избранные процедуры. Для предотвращения конфликтов имён, эта задача не будет перезаписывать уже существующие на получающем сервере хранимые процедуры.

Помимо упомянутых выше, SQL Server 2000 DTS предлагает более сложные задачи, например: Execute Package, Dynamic Properties, ActiveX Script, Transform Data, Data Driven Query, и Message Queue. Мы рассмотрим их в следующей статье.

[В начало]    [К следующей статье цикла]


Перевод: Александра Гладченко  2004г.

ПУБЛИКАЦИИ

Скачать электронную карту Ангарска бесплатно
Сайт управляется системой uCoz