Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Вопросы и ответы по MS SQL Server" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
MS SQL Server - дело тонкое...
Информационный Канал Subscribe.Ru |
#187<< #188 |
СОДЕРЖАНИЕ
SQL Server 2000 DTS. Часть 10. Задачи DTS Designer: Data Driven Query Task По материалам статьи Marcin Policht: SQL Server 2000 DTS Part 10 - DTS Designer Tasks - The Data Driven Query Task
В арсенале задач DTS Designer наиболее разносторонним и сложным является Data Driven Query Task. Его основной отличительной особенностью
от других задач является не только возможность исполнения операций вставки записей в процессе трансформации, но и других инструкций T-SQL,
таких как UPDATE, DELETE или запуск хранимых процедур. Правда, такая гибкость обходиться потерями производительности, так что лучше
по возможности избегать использования этой задачи. Операции вставки записей наиболее эффективно исполняются описанными в предыдущих
статьях Transform Data Task и Bulk Insert Task.
Теперь пришло время рассмотреть, как используются описанные выше компоненты на очень простом примере. Нашим источником данных будет текстовый файл, содержащий записи, которые будут использоваться для изменений в таблице Shippers базы данных Northwind. Формат файла с разделителем в виде точки с запятой, а содержать он будет следующие строки: Update;1;Super Speedy Express;(503) 555-9831 Update;2;Offshored Package;91 (123) 555-3199 Insert;4;Road Runner;(503) 555-1234 Insert;5;Speedy Gonzalez;(503) 555-4321 Delete;4;Road Runner;(503) 555-1234
Скопируйте эти пять строк в текстовый файл и сохраните его (место и имя можно выбрать произвольно). Как Вы могли уже догадаться, первое
поле указывает на тип выполняемого изменения, второе - это идентификатор строки, а последние два (название и телефон компании) используются
для создания новой записи или изменения существующей (очевидно, они не существенны в случае удаления). Строка номер 4 будет вставлена,
а затем удалена (в целях демонстрации). Обратите внимание на то, что мы не можем просто удалить три уже существующие строки таблицы
Shippers из-за ограничений ссылочной целостности. После того, как DTS задача будет исполнена, первые две строки должны измениться, а пятая
строка будет добавлена (со значением поля ShipperID равным 5). Function Main() DTSDestination("ShipperID") = DTSSource("Col001") DTSDestination("CompanyName") = DTSSource("Col002") DTSDestination("Phone") = DTSSource("Col003") Main = DTSTransformstat_InsertQuery End Function Замените его на другой (см. ниже), который будет анализировать значение первого поля и, в зависимости от этого, определять какая инструкция будет исполнена для анализируемой строки: Function Main() Select Case UCase(Trim(DTSSource("Col001"))) Case "UPDATE" DTSDestination("ShipperID") = DTSSource("Col002") DTSDestination("CompanyName") = DTSSource("Col003") DTSDestination("Phone") = DTSSource("Col004") Main = DTSTransformstat_UpdateQuery Case "INSERT" DTSDestination("ShipperID") = DTSSource("Col002") DTSDestination("CompanyName") = DTSSource("Col003") DTSDestination("Phone") = DTSSource("Col004") Main = DTSTransformstat_InsertQuery Case "DELETE" DTSDestination("ShipperID") = DTSSource("Col002") Main = DTSTransformstat_DeleteQuery Case ELSE Main = DTSTransformstat_UserQuery End Select End FunctionПодтвердите сделанные изменения, нажав кнопку OK, и возвращайтесь в диалоговое окно Data Driven Query Task Properties. На закладке Queries заполните представленные ниже инструкции для типов запросов (INSERT, UPDATE и DELETE) следующим TSQL кодом (по одному для каждого типа): INSERT Shippers ([CompanyName],[Phone]) VALUES (?, ?) UPDATE Shippers SET CompanyName = ?, Phone = ? WHERE (ShipperID = ?) DELETE FROM Shippers WHERE ShipperID = ? При этом для каждой инструкции стоит нажимать кнопку Parse/Show Parameters, что бы проверить соответствие параметров полям получающей данные таблицы Shippers. Предлагаемое по умолчанию отображение параметров на поля таблицы Shippers нужно изменить для получения верного соответствия, нажав левую кнопку мыши на перечисленных в нижней части диалогового окна именах полей принимающей данные таблицы (это будет необходимо сделать для инструкций INSERT и UPDATE). Наконец, нажмите кнопку OK, чтобы закрыть диалоговое окно Data Driven Query Task Properties, после чего сохраните и выполните этот пакет. После этого, Вы можете проверить, что содержимое таблицы Shippers было изменено так, как мы ожидали, для чего можно использовать стандартные методы просмотра данных таблицы (Query Analyzer или Enterprise Manager): 1 Super Speedy Express (503) 555-9831 2 Offshored Package 91 (123) 555-3199 3 Federal Shipping (503) 555-9931 5 Speedy Gonzalez (503) 555-4321 Работа этой задачи может использоваться Вами в качестве примера для разработки собственных пакетов, включая задачу Data Driven Query. Для изучения других примеров, можно обратиться к Books Online. Мы завершим рассмотрение задач DTS в следующей статье этого цикла. Статьи на русском языке
Практическое использование особенностей .Net CLR в новой версии сервера MS SQL 'Yukon' Новые и обновлённые технические статьи Microsoft
BUG: A transfer of data from a SQL Server CE database to a remote SQL Server database fails when you use the Push method in SQL Server CE Remote Data Access
Compare 4 key programming languages Самые популярные темы недели
Ваше мнение об упражнениях SELECT на http://sql.ipps.ru
Idbigint и Delphi
|
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||