Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 DTS. Как узнать Task.Name  [new]
AlexR
Guest
В пакете есть пару Task. Как в дизайнере узнать Task.Name, в любой задаче я указываю Task.Description. Или как по Task.Description узнать Task.Name в Active Script Task.


\nDim oTask
Set oTask=oPKG.Tasks("Имя задачи????")
Дальше работы со свойствами задачи.
Set oTask = Nothing



SQL Server 7.0
18 окт 01, 08:36    [15351]     Ответить | Цитировать Сообщить модератору
 RE:DTS. Как узнать Task.Name  [new]
Dennis
Guest
Что значит как узнать, когда ты сам говоришь, что в пакете есть пара Tasks они в дизайнере сразу показываются с именами, эти имена можно изменить, вот тебе и имя тасков.
Отступление:
Я вообще-то сделал так не написав ни одного скрипта на ВБ, просто сделал несколько PAckage каждый из которых делал свою часть, потом слил их всех в один Job и уже после этого написал хранимую процедуру в две строчки которая запускает Job, очень удобно, шаги в Job расставлены так чтобы соблюдалась логика работы естественно.
19 окт 01, 08:32    [15352]     Ответить | Цитировать Сообщить модератору
 RE:DTS. Как узнать Task.Name  [new]
Glory
Guest
2Dennis
То что показывается в дизайнере есть как раз description для task, а не её имя. Имена у них приблиительно такие DTSTask_DTSSendMailTask_2

2AlexR
Я не нашел ничего лучше чем перебирать все task в цикле и отлавливать их по description

В данном примере я ищу SendMailTask по ее description

Dim dtsPackage
Set dtsPackage = DTSGlobalVariables.Parent

Dim dtsMailTask, i
For i = 1 to DtsPackage.Tasks.Count
If DtsPackage.Tasks.Item(i).Description = "OK mail" Then
' Два варианта - либо запоминаем ссылку на нужный объект task
Set dtsMailTask = DtsPackage.Tasks.Item(i)
' либо сразу же устанавливаем значания для его свойств
DtsPackage.Tasks.Item(i).CustomTask.MessageText = "OK. " + DTSGlobalVariables("FTPLastMessage").Value
Else
If DtsPackage.Tasks.Item(i).Description = "Fail mail" Then
DtsPackage.Tasks.Item(i).CustomTask.MessageText = "Failed. " + DTSGlobalVariables("FTPLastMessage").Value
End If
End If
Next
19 окт 01, 09:08    [15353]     Ответить | Цитировать Сообщить модератору
 RE:DTS. Как узнать Task.Name  [new]
Glory
Guest
Думаю, что это должно работать и в SQL7 (у меня SQL200)
19 окт 01, 09:10    [15354]     Ответить | Цитировать Сообщить модератору
 RE:DTS. Как узнать Task.Name  [new]
AlexR
Guest
2Glory
Спасибо. Да это работает и на 7. Я так и делал, но думал что есть метод получения имени.

Так как задач много и перебирать все нет необходимости.
Сделал в пакете вспомогательную задачу которая возвращает выводить через MsgBox Name и а потом работаю с Name. Когда все заработает задачу грохнуть и порядок.

Я только не могу понять почему нельзя узнать Name из дизайнера, какая интересно в этом причина.
В 2000 ситуация не изменилась.
19 окт 01, 10:29    [15355]     Ответить | Цитировать Сообщить модератору
 RE:DTS. Как узнать Task.Name  [new]
Glory
Guest
IMHO причина в том, что имена task-ов дизайнер генерирует сам(я так понимаю из соображений уникальнcти).
Т.е. например 1-ая созданная SendMailTask получит имя DTSTask_DTSSendMailTask_1, 2-ая соответсвенно _2 и т.д. Но если вы удалите 1-ый SendMailTask и вместо него создатите новую с другими параметрами, то дизайнер присвоит ей имя DTSTask_DTSSendMailTask_1, а не 3.

Т.е. теоритически если вы уверены, что знаете порядок создания задач одного типа(и он никогда не будет меняться), то можно так

Dim dtsMailTask
Set dtsMailTask = DtsPackage.Tasks("DTSTask_DTSSendMailTask_"+Cstr(i))
19 окт 01, 11:10    [15356]     Ответить | Цитировать Сообщить модератору
 RE:DTS. Как узнать Task.Name  [new]
Glory
Guest
Не долвел мысль до конца

По моим наблюдениям часть имени DTSTask_DTS постоянная, далее идет часть описывающая конкретную задачу SendMailTask, DataPumpTask, ActiveScriptTask, ... и потом номер _NN
19 окт 01, 11:15    [15357]     Ответить | Цитировать Сообщить модератору
 RE:DTS. Как узнать Task.Name  [new]
AlexR
Guest
Да пусть генерит сам, но показать их в дизайнере ведь можна. Просто вывести название.
В пакете 10 задач на момент когда пакет будет отлажен и работать нормально все Name я могу знать и обращаться к задача используя Name.
19 окт 01, 11:39    [15358]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: DTS. Как узнать Task.Name  [new]
primapapa
Guest
If you go to "Workflow Properties", then "Options" you can read it at the very top of the form
11 мар 03, 23:33    [144626]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить