|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Есть база с таблицей, в которой примерно 30млн строк. База весит примерно 20 Гб. Создал триггер на обработку позиций и указал операцию в триггере "INSERT, UPDATE". триггер в определенном столбце выставляет значение NULL. теперь этот триггер я не могу остановить. Т.е. триггер начинает обрабатывать дынные, долго долго думая, пытаюсь через sql запрос (DROP TRIGGER или DISABLE TRIGGER) его остановить и сервак пишет что ожидает выполнение запроса и висит. При этом начинает рости tempdb, пока не закончится место на жестком диске (свободно 400 Гб). Через контекстное меню тоже не отключается триггер, система говорит "превышение тайм-аута блокировки". Предполагаю что из-за операции UPDATE, триггер начинает по кругу отрабатывать, а за счет большой базы грузится система и не проходят команды на остановку триггера. Подскажите другой способ вырубить (удалить) триггер? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 09:40 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Hells87, kill в смысле, ты убей процесс который его использует, а потом делай с триггером что хочешь ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 10:50 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
court, я и по kill сразу понял)) спасибо, попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 11:02 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Триггеры - зло. Их сложно изменить на лету, т.к. большая вероятность дедлока. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 11:09 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
L_argo риггеры - зло. Их сложно изменить на лету, т.к. большая вероятность дедлока. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 11:50 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
invm L_argo риггеры - зло. Их сложно изменить на лету, т.к. большая вероятность дедлока. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 11:51 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
L_argo Раз в 50-100, ИМХО. И чем вызвана эта разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 11:54 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Hells87, Триггеры мощное средство но безусловно требуют квалификации и иногда трудно отлаживаются - траблшутятся @invm мне подсказывал способ как можно отключить триггер в конкетной сессиии с помощью трюка в начале триггера if exitsts ( #Tmp_triggers_disable) return и создания такой временной таблицы #Tmp_triggers_disable в начале сессии где надо отключить его ps для отлакди в тригере можно юзать те же Select pps вообщем подумать надо - если выбор за тобой - то возможно пока и отказаться от них ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 12:07 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Гулин Федор Hells87, Триггеры мощное средство но безусловно требуют квалификации и иногда трудно отлаживаются - траблшутятся @invm мне подсказывал способ как можно отключить триггер в конкетной сессиии с помощью трюка в начале триггера if exitsts ( #Tmp_triggers_disable) return и создания такой временной таблицы #Tmp_triggers_disable в начале сессии где надо отключить его ps для отлакди в тригере можно юзать те же Select pps вообщем подумать надо - если выбор за тобой - то возможно пока и отказаться от них На мой взгляд, триггер НЕ стоит вешать туда, где его предполагается включать/выключать. Сколько "стоит" стоит такая проверка (проверка наличия сторонней таблицы) в плане производительности? По теме: вероятно неправильно спроектирован триггер - так как заср@ть 400ГБ триггером, который в определенном столбце выставляет значение NULL по базе в 20 гиг, - это очень круто ! Хорошо, если на забитом диске sp_who2 работает и kill выполняется... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 12:38 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
court Hells87, kill в смысле, ты убей процесс который его использует, а потом делай с триггером что хочешь Попробовал, в списке сессий висит "среда MS SQL Server Management Studio". отдельной задачи по триггеру нет. так что нечего тут убивать ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 13:25 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Гулин Федор Hells87, Триггеры мощное средство но безусловно требуют квалификации и иногда трудно отлаживаются - траблшутятся @invm мне подсказывал способ как можно отключить триггер в конкетной сессиии с помощью трюка в начале триггера if exitsts ( #Tmp_triggers_disable) return и создания такой временной таблицы #Tmp_triggers_disable в начале сессии где надо отключить его ps для отлакди в тригере можно юзать те же Select pps вообщем подумать надо - если выбор за тобой - то возможно пока и отказаться от них Так я этот триггер не могу поменять, потому что висит запрос. Выбор за мной, но сейчас задача долбануть этот триггер. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 13:27 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Hells87, А DISABLE TRIGGER не пробовали? На крайняк DROP TRIGGER авторТриггеры - зло! Согласен. Лучше JOB использовать и по отсечкам времени отрабатывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 13:45 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Нестандартное мышление, триггер нельзя отключить, пока он выполняется хотя бы в одном сеансе. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 13:48 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Владислав Колосов Нестандартное мышление, триггер нельзя отключить, пока он выполняется хотя бы в одном сеансе. Можно остановить агента и в server_triggers поставить 1 в is_disabled. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 13:55 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
А вообще. Надо такую структуру менять. Либо мощности как у гугла уже закупать. ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 13:58 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Нестандартное мышление Hells87, А DISABLE TRIGGER не пробовали? На крайняк DROP TRIGGER авторТриггеры - зло! Согласен. Лучше JOB использовать и по отсечкам времени отрабатывать. Пробовал. висит запрос и всё. Триггер видимо все ресурсы на себя забирает ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 14:18 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
SIMPLicity_ Гулин Федор Hells87, Триггеры мощное средство но безусловно требуют квалификации и иногда трудно отлаживаются - траблшутятся @invm мне подсказывал способ как можно отключить триггер в конкетной сессиии с помощью трюка в начале триггера if exitsts ( #Tmp_triggers_disable) return и создания такой временной таблицы #Tmp_triggers_disable в начале сессии где надо отключить его ps для отлакди в тригере можно юзать те же Select pps вообщем подумать надо - если выбор за тобой - то возможно пока и отказаться от них На мой взгляд, триггер НЕ стоит вешать туда, где его предполагается включать/выключать. Сколько "стоит" стоит такая проверка (проверка наличия сторонней таблицы) в плане производительности? По теме: вероятно неправильно спроектирован триггер - так как заср@ть 400ГБ триггером, который в определенном столбце выставляет значение NULL по базе в 20 гиг, - это очень круто ! Хорошо, если на забитом диске sp_who2 работает и kill выполняется... В MSSQL есть смысл перед обновлением поля проверять, а не имеет ли это поле уже такое же значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 14:28 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Hells87, Сейчас пробуем базу перенести с резервной базы (там нет этого триггера). Тогда еще вопрос: как тогда реализовать на базе MS SQL такую задачу? Внешняя прога складывает в таблицу значения, но необходимо, чтобы значения в определенном столбце удалялись. Либо надо триггер отладить, чтобы он работал только для новых записей, чтобы сервак не ложить. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 14:29 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
a_voronin, Согласен. Мало опыта работы с MSSQL. думал, ну не пойдет, отключу. А теперь отключить не получается. На маленькой базе всё работает нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 14:32 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Hells87 court Hells87, kill в смысле, ты убей процесс который его использует, а потом делай с триггером что хочешь О том, что в SSMS пользователь открыл транзакцию, сделал что то, на что срабатывает этот триггер, и задумался. Поэтому триггер и заблокирован. Посмотрите, кто это такой. Спросите у него, долго ли он будет держать открытой транзакцию. Заставьте закрыть окно, а если он скажет "а чо я ничо не делал", то сделайте kill этой сессии, она ему не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 14:52 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
alexeyvg, Ну я предположил, что эта студия бала в которой я и сидел. Так как на серваке были еще запущены БД, я их в службах стопнул и в списке сессий осталась одна эта запись (было 3) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 15:02 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Hells87, Всем спасибо. Пока искали решение, коллега перекинул базу с резервного сервака (на котором нет этого триггера). Триггер так и не получилось стопнуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 15:04 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Hells87 Hells87, Тогда еще вопрос: как тогда реализовать на базе MS SQL такую задачу? Внешняя прога складывает в таблицу значения, но необходимо, чтобы значения в определенном столбце удалялись. Либо надо триггер отладить, чтобы он работал только для новых записей, чтобы сервак не ложить. Сейчас будем работать над этим вопросом ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 15:06 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Hells87 Hells87, Всем спасибо. Пока искали решение, коллега перекинул базу с резервного сервака (на котором нет этого триггера). Триггер так и не получилось стопнуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 15:08 |
|
Принудительное отключение триггера
|
|||
---|---|---|---|
#18+
Hells87 alexeyvg, Ну я предположил, что эта студия бала в которой я и сидел. Так как на серваке были еще запущены БД, я их в службах стопнул и в списке сессий осталась одна эта запись (было 3) Вот и сделали бы kill, и всё бы получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 15:16 |
|
|
start [/forum/topic.php?fid=46&msg=39965037&tid=1686042]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 283ms |
total: | 433ms |
0 / 0 |