powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DTS - вести свой лог
7 сообщений из 7, страница 1 из 1
DTS - вести свой лог
    #32029889
Илья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал я DTS для подбора и обработки текстовых файлов. Файлов несколько, они независимы. Сначала собираем, потом обрабатываем, по окончании - высылаем мыло админу.
Собственно вопрос такой: как можно вести свой лог в DTS? Я попробовал после каждого task вставлять 2 объекта ActiveX Script - к одному идет ветка Workflow "Failure" к другому - "Succes" ну и уже в них формирую текст будущего письма (вставляю строчку - успешно или нет отработался шаг). Далее от каждого из них к следующему шагу идет Workflow "Complete". Однако не работает

DTS выполняется пошагово до первого такого ветвления и дальше не работает - говорит что успешно выполнен


Возможно криво я все это сделал, но тогда черкните пару строк, как это все лучше можно сделать?
...
Рейтинг: 0 / 0
DTS - вести свой лог
    #32029891
Леша
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть еще вариант - использование хранимых процедур для записи в Eventlog: xp_logevent
...
Рейтинг: 0 / 0
DTS - вести свой лог
    #32029918
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я попробовал после каждого task вставлять 2 объекта ActiveX Script - к одному идет ветка Workflow "Failure" к другому - "Succes" ну и уже в них формирую текст будущего письма (вставляю строчку - успешно или нет отработался шаг). Далее от каждого из них к следующему шагу идет Workflow "Complete". Однако не работает
DTS выполняется пошагово до первого такого ветвления и дальше не работает - говорит что успешно выполнен

Если запуск задания зависит от статусов выполнения других заданий, то эти статусы проверяются с помощью логического И


-----On Success--->ActiveX Script1---On Complete----
| |
Some Task1 Some Task2
| |
-----On Failure--->ActiveX Script2---On Complete----


т.е. Some Task2 выполнится при завершении ActiveX Script1 _И_ ActiveX Script2, что не может произойти в принципе.

Логическое ИЛИ в DTS придется организовывать через дублирование task-ов


-----On Success--->ActiveX Script1---On Complete---->Some Task2
|
Some Task1
|
-----On Failure--->ActiveX Script2---On Complete---->Some Task3


или через динамическое изменение статуса выполнения нужных шагов.
...
Рейтинг: 0 / 0
DTS - вести свой лог
    #32029926
Илья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как все красиво было сначала!


дублировать Task'и не получится, много их слишком


можно поподробнее про
"или через динамическое изменение статуса выполнения нужных шагов"
??
...
Рейтинг: 0 / 0
DTS - вести свой лог
    #32030056
Voland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я поступаю проще нужно зайти в package properti перейти на вкладку Logging а затем в поле Error file указать путь и имя файла
после выполнения дтс в этом файле будет лог по каждому пути успех или ошибка и какая именно берите этот файл и мыльте админу все
...
Рейтинг: 0 / 0
DTS - вести свой лог
    #32030073
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно поподробнее про "или через динамическое изменение статуса выполнения нужных шагов"??

Можно

1. Для SQL2000 все легко
- создаем Package вроде такого http://www.hot.ee/gloryee3/pic1.jpg
- Some Task1 случайно генерирует удачный/неудачный результат выполнения http://www.hot.ee/gloryee3/pic2.jpg
- ActiveX Script 1 и ActiveX Script 2 производят какие-либо действия http://www.hot.ee/gloryee3/pic3.jpg http://www.hot.ee/gloryee3/pic3.jpg
- Some Task2 должна выполнить какие-либо обязательные действия для любого результата Some Task1 http://www.hot.ee/gloryee3/pic5.jpg

Для этого добавляем 2 Dynamic Properties Task (буду рассказывать про один, т.к. для второго нужно будет проделать тоже самое) Status for 2 и Status for 1 внутри которых принудительно устанавливаем статус "противоположного" Task-a в 4, что есть Step execution is completed
http://www.hot.ee/gloryee3/pic6.jpg
http://www.hot.ee/gloryee3/pic6_1.jpg
http://www.hot.ee/gloryee3/pic6_2.jpg



2. Для SQL7 придется немного "поработать", т.к. Dynamic Properties Task там нет, но сами Properties имеются

В ActiveX Script 1 ищем "противоположный" Step и опять же устанавливаем ему статус выполнения

Function Main()
msgbox "Some Task1 Success"
Dim dtsPackage, i, objStep

Set dtsPackage = DTSGlobalVariables.Parent
For i=1 to dtsPackage.Steps.Count
If dtsPackage.Steps.Item(i).Description = "ActiveX Script 2" Then
Set objStep = dtsPackage.Steps.Item(i)
objStep.ExecutionStatus = 4
Exit For
End if

Next


Main = DTSTaskExecResult_Success
End Function


Тоже самое для ActiveX Script 2

Запускаем и проверяем
...
Рейтинг: 0 / 0
DTS - вести свой лог
    #32030567
Илья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хитро!
Спасибо, пригодилось!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / DTS - вести свой лог
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]