|
По материалам статьи Marcin Policht: SQL Server 2000 DTS Part 5 - DTS Designer Tasks and Global Variables В предыдущей
статье мы познакомились с простыми типами задач DTS
Designer. Мы продолжим здесь их обсуждение, сосредоточившись
на более сложных моментах. Однако, прежде чем мы продолжим,
давайте более детально изучим понятие DTS Global Variables,
которое поможет нам понимать некоторые нюансы настройки
задач. Создадим в Enterprise Manager средствами Data Transformation Services новый пакет (выбрав New Package в контекстном меню Local Packages). Настроим новое подключение к базе Northwind, используя Microsoft OLE DB provider for SQL Server (указав параметры аутентификации, выбрав Northwind в списке баз данных и назвав подключение Northwind DB). Далее, в меню Task выберите Execute SQL Task (или перетащите его из раздела Task на инструментальной панели с левой стороны окна). Вы увидите диалоговое окно Execute SQL Task Properties. В поле Description напечатайте Select MAX OrderID (или другое описание, расшифровывающее цель этой задачи). Убедитесь, что база Northwind выбрана в списке Existing connection, значение Command time-out = 0 (этим снимается ограничение времени исполнения задачи) а в текстовом боксе SQL Statement введите следующее: SELECT MAX(OrderID) FROM Orders WHERE RequiredDate BETWEEN ? AND ? AND CustomerID = ? Как Вы помните из предыдущей статьи, вопросительные знаки в контексте Execute SQL Task определяют входные параметры. В нашем простом запросе мы имеем три параметра (Parameter 1, Parameter 2 и Parameter 3, которые соответствуют первому, второму и третьему вопросительному знаку). Теперь, мы должны связать эти параметры с глобальными переменными, для которых мы должны будем указать какие-нибудь значения. Это можно сделать, нажав на кнопку Parameter, расположенную на закладке General диалогового окна Execute SQL Task Properties. Вы попадёте в диалоговое окно Parameter Mapping. После щелчка по кнопке Create Global Variables, нужно ввести четыре переменные (три для входных параметров и одну для выходного параметра) и определить типы и значения для каждого из них. Обратите внимание, что если Вы создадите не строковую переменную, требуется обязательно ввести её значение, иначе, Вы получите сообщение об ошибке: "could not convert variable XXXX from type BSTR to type YYYY", где XXXX и YYYY - имена созданных Вами переменных. Введите следующие данные: gVarDateFrom String 1998-06-02 gVarDateTo String 1998-06-03 gVarCustomerID String BONAP gVarMaxOrderID Integer 0 Как только Вы нажмёте OK, Вы снова вернётесь в окно Parameter Mapping. Здесь нужно мапировать Input Global Variables на параметры, как это показано ниже, используя выпадающий список для каждого из них: gVarDateFrom Parameter 1 gVarDateTo Parameter 2 gVarCustomerID Parameter 3 Далее, на закладке Output Parameters, устанавливаем
переключатель Output Parameter Type на Row Value и
устанавливаем значение поля Output Global Variables равным
gVarMaxOrderID. После этого, закройте активные окна, сохраните
и выполните пакет. Откройте свойства DTS Package и перейдите
на закладку Global Variables. Вы должны видеть все переменные,
которые мы определили, и их значения. Если все действия были
сделаны правильно, gVarMaxOrderID должно равняться 11076, а
все другие значения должны быть такими, как мы их задали. Как
Вы можете видеть, глобальные переменные сохраняют свои
значения и после исполнения пакета. Также, очень удобно
изменить их в одном месте, если нужно повторно запускать этот
пакет для разных gVarCustomerID или для других диапазонов дат.
Очевидно, что Вы можете изменять значения глобальных
переменных вручную; однако, Вы можете получить то же самое
посредством создания соответствующего скрипта. Это позволит
Вам упростить или даже полностью автоматизировать модификацию
пакета.
С помощью внешних файлов или переменных среды, Вы можете
изменять параметры пакета без его редактирования, что повышает
и упрощает его мобильность. Обратите внимание, что задача
Dynamic Properties должна исполняться среди первых в пакете
(это мы обсудим в следующих статьях, и как этим можно
управлять, используя компоненты технологического процесса
пакета). Используя такой подход, Вы можете гарантировать, что
любое из свойств, которое используется в пакете, будет иметь
перед использованием правильное значение. |
Перевод: Александра Гладченко 2004г. |