По материалам статьи Marcin Policht: SQL
Server 2000 DTS Part 3 - DTS Designer Connections
В предыдущей
статье мы рассмотрели способы создания DTS пакетов с
помощью мастеров. Несмотря на простоту, этот подход имеет
некоторые ограничения, которые можно обойти двумя способами,
используя DTS Designer или DTS object model в языках
программирования, например, в Visual Basic. Второй из этих
способов позволяет использовать все возможности DTS, но первый
более популярен из-за комбинации его относительно богатых
функциональных возможностей и легкости использования. Это
также является причиной того, что автор акцентирует внимание
на DTS Designer в этой статье.
DTS Designer можно вызвать
из папки Data Transformation Services в SQL Server Enterprise
Manager, и он предоставляет возможность создавать и
редактировать DTS пакеты с помощью графического интерфейса.
Пакет состоит из нескольких компонент, таких как подключение,
задачи и реализующие бизнес-логику процессы. Эти компоненты
обозначаются соответствующими значками, которые формируют
визуальное представление потока данных и их трансформации. Вы
можете легко посмотреть на структуру типичного пакета, открыв
предварительно созданный мастером Export/Import пакет, работу
которого мы обсуждали в предыдущей статье (не забыв, конечно,
его сохранить). Для начала, мы более детально рассмотрим
первый из компонентов - подключение.
Подключения составляют
основную часть любого пакета, так как они обеспечивают доступ
к источнику и получателю данных. DTS осуществляет подключения,
используя OLE DB технологию, которая, кроме высокой
производительности, обеспечивает также масштабируемость,
позволяющую использовать соответствующие OLE DB провайдеры для
соединения с разнородными источниками данных. Вообще, типы
подключений могут быть сгруппированы по следующим
категориям:
- Позволяющие осуществлять прямой доступ через OLE DB
провайдера к распространённым базам данных: Microsoft SQL
Server 2000, Microsoft Access 2000, dbase 5, Paradox 5.x.
- Позволяющие получать косвенный доступ через OLE DB
провайдера к ODBC драйверам любых поддерживающих ODBC
источников данных (это относится и к Oracle).
- Позволяющие осуществлять доступ к не реляционным
источникам данных, например: файлам Microsoft Excel 97/2000,
HTML и текстовым файлам практически любого формата
(использующие разграничители полей, ASCII или UNICODE и
т.д.).
Каждый из этих типов подключений представлен
отдельным значком интерфейса DTS Designer в разделе
Connections. Свойства каждого типа подключений зависят от OLE
DB провайдера. Например, при создании подключения к SQL Server
2000 будет запрошено имя экземпляра сервера, тип
аутентификации (Windows или SQL Server), имя/пароль
пользователя (если была выбрана SQL Server Authentication) и
имя подключаемой базы данных. Также, у Вас есть возможность
установить значения для расширенных свойств (нажав кнопку
Advanced), например, "Persist Security Info" (его мы обсудим
ниже в этой статье), Application Name или Workstation ID
(которые соответствуют имени хоста и полю program_name в
master.dbo.sysprocesses, и весьма полезны при анализе или
поиске проблем исполняющихся на сервере процессов, например, с
помощью хранимой процедуры sp_who2). Для каждого пакета Вы
должны использовать уникальные (и желательно выразительные)
имена подключений. Есть и другой способ разбиения на категории
разных типов подключений, который основан на сохранённой
информации о подключениях. Суть его в том, что когда Вы
добавляете к пакету описанным выше способом любое из
возможных, обозначенных соответствующими значками подключений,
оно станет неотъемлемой частью этого пакета. Параметры
подключения (логин и пароль для соединения с источником
данных) являются статическими, даже если пакет скопирован в
другое место. Чтобы не менять пакет для корректировки
параметров подключения, можно использовать внешние файлы
Microsoft Data Link, которые предоставляют дополнительный
способ хранения информации о подключениях. UDL файлы упрощают
работу с пакетами, которые копируются и исполняются в разных
местоположениях данных. Так как параметры подключения будут
сохранены в отдельном файле, отпадает необходимость изменения
содержимого пакета. Новые свойства подключения можно просто
сохранить в UDL файле. Ещё одной альтернативой является
использование глобальных переменных, задач Dynamic Properties
или сохранённых ActiveX скриптов, которые изменяют свойства
подключений с помощью DTS object model (мы рассмотрим эти
методы более подробно в следующих статьях).
Подготовка DTS
пакета с внешним UDL файлом выполняется в два шага:
Шаг 1.
Вначале, создаётся UDL файл (без использования Enterprise
Manager) - самым простым способом создания UDL-файла является
использование для этого Проводника Windows. В окне Проводника
выберите папку, где Вы хотите сохранить файл, так что бы её
содержимое отображалось в области окна. Вызовите
контекстно-зависимое меню, нажав правую кнопку мыши на пустой
области окна, и выберите опцию New->Text Document
(Создать->Текстовый документ), или выберите эту опцию в
меню File. Придумайте имя файла, и измените его расширение со
значения по умолчанию .TXT на .UDL. Для того чтобы без проблем
сменить расширение файла, признак скрытия последней части имён
файлов: "Скрывать расширения для зарегистрированных типов
файлов" (Hide extensions for known file types) должен быть
отключён. Эта опция устанавливается на закладки "Вид" (View)
свойств папки, вызываемых из меню "Сервис" (Tools) Проводника.
Как только необходимое расширение установлено, Вы должны
увидеть, что иконка файла автоматически измениться и будет
отражать его функцию (она будет похожа на значок Microsoft
Data Link в DTS Designer). Теперь Вы можете просто дважды
щелкнуть по файлу или выбрать опцию "Открыть" (Open) в
контекстно-зависимом меню UDL-файла. Будет отображено
диалоговое окно мастера "Свойства связи с данными" (Data Link
Properties), разделенное на четыре закладки:
Поставщик данных (Provider)
Позволяет выбирать OLE DB провайдера, используемого
подключением. Например, выбрав: Microsoft OLE DB Provider for
ODBC Drivers Вы сможете подключать все возможные имена
источников данных, определенные в утилите "Администратор
источников данных ODBC" (ODBC Data Source Administrators).
Число перечисленных там провайдеров будет зависеть от того,
сколько их установлено на системе, где был создан UDL
файл.
Подключение (Connection)
Содержит параметры подключения, которые необходимы
указанному ранее OLE DB провайдеру. Это означает, что
параметры на этой закладке зависят от выбора, который был
сделан на закладке "Поставщик данных". Здесь может быть
указано местоположение источника данных и варианты
аутентификации. Также, Вы можете протестировать информацию о
подключении, нажав кнопку "Проверить подключение" (Test
Connection).
"Дополнительно" (Advanced)
Определяет "Уровень олицетворения" (Impersonation level) и
"Уровень защиты" (Protection level), время ожидания
подключения (connection timeout) и права доступа (access
permissions).
Выдержка из справочного руководства:
Уровень олицетворения используется сервером при
исполнении роли клиента. Данное свойство не
распространяется на соединения RPC (Remote Procedure
Call - вызовы удаленных процедур); а сами уровни
представления аналогичны использующимся в RPC. Значения
свойства напрямую соответствуют уровням олицетворения,
которые могут быть указаны для проверенных соединений
RPC, но могут применяться и к другим соединениям.
Выберите один из следующих уровней:
- Аноним - анонимное подключение клиента к серверу.
Процессу сервера недоступны идентификационные сведения
клиента, поэтому представление клиента невозможно.
-
- Делегирование - при работе от лица клиента,
процесс может использовать защищенный контекст
клиента. Кроме того, в этом случае от имени клиента
процессом сервера могут осуществляться подключения к
другим серверам.
-
- Идентификация - клиент может быть опознан
сервером. Сервер может исполнять роль клиента при
проверке таблицы управления доступом ACL (Access
Control List), однако получить доступ к системным
объектом как клиент он не может.
-
- Олицетворение - при работе в качестве клиента,
процесс сервера может использовать защищенный контекст
клиента. Сведения могут быть получены только при
установленном соединении, но не при каждом
вызове.
Уровень защиты относится к данным,
передаваемым между сервером и клиентом. Данное свойство
не распространяется на соединения RPC (Remote Procedure
Call - вызовы удаленных процедур); а сами уровни защиты
аналогичны использующимся в RPC. Значения свойства
напрямую соответствуют уровням защиты, которые могут
быть указаны для проверенных соединений RPC, но могут
применяться и к другим соединениям. Выберите один из
следующих уровней:
- Вызов - проверка подлинности источника данных в
начале каждого запроса от клиента к серверу.
- Подключение - проверка подлинности данных
проводится только при установлении соединения с
сервером.
- Не проверяется - подлинность отправляемых на
сервер данных не проверяется.
- Пакет - проверка подлинности того, что все
полученные данные исходят от клиента.
- Целостность пакета - проверка подлинности того,
что все полученные данные исходят от клиента и не были
изменены при передаче.
- Приватность пакета - проверка подлинности того,
что все полученные данные исходят от клиента и не были
изменены при передаче, а также защита
конфиденциальности данных шифрованием.
Время ожидания подключения - это время (в секундах),
в течение которого поставщик OLE DB ожидает завершения
инициализации. По истечении этого времени соединение
установлено не будет и возникнет ошибка. Выберите
также одно или несколько прав доступа:
- Read - только чтение.
- ReadWrite - чтение и запись.
- Share Deny None - никому не отказывать ни в
чтении, ни в записи.
- Share Deny Read - запретить всем работу в режиме
чтения.
- Share Deny Write - запретить всем работу в режиме
записи.
- Share Exclusive - запретить всем работу в режиме
чтения/записи.
- Write - только запись.
|
Все (All)
Представляет полный список свойств, как доступных на
предыдущих трёх закладках, так и дополняющие их свойства
подключения. Это уже упомянутое "Persist Security Info",
"Workstation ID" или "Application Name" при использовании SQL
Server OLE DB Provider.
Обратите внимание, что UDL - это обычный текстовый файл,
так что вся его информация может быть легко прочитана, и это
необходимо учитывать с точки зрения обеспечения информационной
безопасности.
Шаг 2.
Далее, в SQL Server Enterprise Manager средствами
интерфейса DTS Designer нужно создать ссылку на UDL файл,
созданный в первом шаге. Для этого, кликните по значку
Microsoft Data Link в области окна Connection. Должно появится
диалоговое окно Connection Properties, в котором Вы должны
определить новое имя подключения и указать существующий UDL
файл. Тут же Вы можете внести изменения в информацию о
подключении, нажав кнопку "Properties…" (после чего будет
отображено то же самое диалоговое окно Data Link Properties,
какое Вы видели при создании UDL файла в Проводнике). Для
достижения нашей цели и упрощения переносимости пакета, Вы
должны выбрать первую опцию (New connection) и использовать
кнопку Browse (обозначенную троеточием) для указания
расположения созданного ранее UDL файла. Обратите внимание на
то, что вторая опция (Existing connection) явно указывает, что
UDL информация может быть внедрена в пакет (при выборе этой
опции, Вы увидите такое же диалоговое окно Data Link
Properties, какое было при открытии UDL файла в Проводнике).
Фактически, Вы можете в пакете кэшировать информацию,
содержащуюся во внешнем UDL файле. Для этого, Вам необходимо
включить чек-бокс "Always read properties from UDL file". Если
этого не сделать, параметры подключения будут загружены из
внешнего UDL файла во время разработки пакета, и если Вы
захотите их изменить, это можно будет сделать в DTS Designer
(или программным путём). Когда же чек-бокс установлен, ссылка
на UDL файл будет всегда происходить при установке подключения
(это именно то, что мы и хотели получить).
При использовании UDL файлов, одним из важных вопросов
обеспечения безопасности является то, что внутри этих файлов
вся информация (включая пароли) хранится в не зашифрованном
виде, в обычном текстовом формате. Чтобы упростить решение
этой проблемы, Вы можете использовать Windows Authentication,
при который не требуется, чтобы учётная информация логина была
сохранена, и вместо этого используется контекст безопасности
пользователя, который зарегистрировался в системе для
исполнения пакета (или учетной записи SQL Server Agent, если
пакет запущен заданием SQL Server).
Другой проблемой
безопасности, которая возникает при любом защищённом
подключении, является тот факт, что по умолчанию, информация
об аутентификации при подключении к источнику данных
кэшируется DTS пакетом. Управлять кэшированием можно путём
изменения параметра Persist Security Info, доступного в
диалоговом окне Advanced Connection Properties. Мы уже
упоминали эту опцию при рассмотрении мастера "Свойства связи с
данными" и его закладки "Все". Persist Security Info принимает
два возможных значения: True - разрешающее кэширование, и
False - запрещающее его.
По умолчанию, при редактировании
свойств подключения DTS Designer пытается проверять
доступность подключения. Иногда это не желательно, например,
если источник данных не всегда может быть доступен в момент
редактирования пакета. Что бы выйти из этого положения, Вы
можете применить опцию Disconnected Edit, доступную из меню
Package в DTS Designer. Выбор этой опции приведёт Вас в
диалоговое окно Edit All Package Properties, в котором, помимо
подключений, Вы сможете без автоматической проверки изменить
задачи, шаги и глобальные переменные пакета.
Ещё одним
моментом, который нужно учитывать при настройке подключений,
является параллельная обработка задач в DTS пакете. Такие
задачи могут одновременно обращаться к одному и тому же
источнику данных, но в этом случае Вы должны убедиться, что
все эти задачи используют отдельные объекты подключения.
Обратите внимание, что этим не подразумевается использование
отдельных UDL файлов, т.к. один UDL файл обеспечит несколько
подключений Microsoft Data Link в DTS пакете (UDL файл
содержит только информацию о подключении, и не является в DTS
объектом подключения).
В следующей статье мы сделаем
краткий обзор DTS задач, которые являются компонентами
трансформации данных.
[В начало]
[К следующей статье цикла]