Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запуск процедуры по триггеру.
|
|||
|---|---|---|---|
|
#18+
Коллеги, добрый день. Уже были темы от меня похожие, но реализовал я процесс через триггер. 1) джоб проверяет, появилась ли новая дата в VIEW vTable_source и если появилась, то вторым шагом должен записывать эту новую дату в таблицу Table_Source, а уже триггер реагирует на новую запись и запускает основную процедуру. Однако, при включенном тригере запись в таблицу table_source новой даты из VIEW vTable_source не происходит и второй шаг джоба падает с ошибкой:Logging Error: The current transaction cannot be committed and cannot support operations that write to the lof file. Roll back the transaction. А при выключенном триггере запись в таблицу table_source из VIEW vTable_source проходит хорошо и джоб отрабатывает нормально. Без ошибок. Возможно вы сможете подсказать, что не верно, и почему при включенному тригере не отрабатывает, а при выключенном отрабатывает.? ALTER TRIGGER start_restart_process ON table_source AFTER INSERT AS BEGIN DECLARE @InDateTime datetime --новая дата в table_source DECLARE @DateInitial datetime --старая дата в table_target DECLARE @Datemodify datetime --старая дата в table_target DECLARE @Enabled int --статус процедуры (работает, не работает) DECLARE @FindSpid int --поиск Spid процедуры SELECT @InDateTime = (SELECT MAX(InDateTime) FROM table_target) --находим макс дату в таблице SELECT @DateInitial = (SELECT MAX(DateInitial) FROM table_destination) -- находим последнюю дату таблице целевой SELECT @Datemodify = (SELECT MAX(DateModify) FROM table_destination) --находим другую максимальную дату, которая логируется другой столбец и необходима для сравнения. SELECT @Enabled = (SELECT TOP (1) work_status_id FROM status_table WHERE source_proc = основная_процедура ORDER BY time_log desc) -- Находим статус работы процедуры SELECT @findspid = (SELECT TOP (1) spid FROM status_table WHERE source_proc = основная_процедура ORDER BY time_log desc) --находим Spid процедуры. IF (@Indatetime > @DateInitial AND @Indatetime > @DateModify AND @Enabled = 5) --если в источнике дата больше чем в той таблице с которой я провожу сравнение и процеура работает - то останавливаем процедуру) BEGIN EXEC ('KILL '+@find_spid) --останавливаю EXEC основная_процедура --и запускаю END ELSE IF (@Indatetime > @DateInitial AND @Indatetime > @DateModify AND @Enabled != 5) --а если процедура не работала EXEC основная_процедура END GO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 18:09 |
|
||
|
Запуск процедуры по триггеру.
|
|||
|---|---|---|---|
|
#18+
Осподи! Спаси и сохрани!!! Откуда этот бред? ЗЫ. Пора переквалифицироваться в управдомы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 18:14 |
|
||
|
Запуск процедуры по триггеру.
|
|||
|---|---|---|---|
|
#18+
dermama, какое значение джоб вставляет в поле table_source.spid? не может так быть, что триггер киляет сессию джоба? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 20:16 |
|
||
|
Запуск процедуры по триггеру.
|
|||
|---|---|---|---|
|
#18+
dermamaВозможно вы сможете подсказать, что не верно, и почему при включенному тригере не отрабатывает, а при выключенном отрабатывает.?Это не связано. "Не отрабатывает" - потому что вами запрограммирована такая логика в "шаге 2". Как то этот шаг зависит от наличия записей в table_source. А запись не вставляется, потому что у вас ошибка в "основная_процедура", и она откатывает вставку. Впрочем, вы используете какие то свои термины, может, всё совсем не так, джобов нет, или есть, но ошибка в первом шаге, ну и т.д. PS Килять процедуру - это жесть, конечно. У вас там что, программистов нет, что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 20:49 |
|
||
|
Запуск процедуры по триггеру.
|
|||
|---|---|---|---|
|
#18+
Gerrosне может так быть, что триггер киляет сессию джоба?Легко. Он даже обращается к status_table, пытаясь что то там найти, вместо использования inserted ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2019, 20:51 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=88&tid=1687262]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 345ms |

| 0 / 0 |
