powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Принудительное отключение триггера
25 сообщений из 46, страница 1 из 2
Принудительное отключение триггера
    #39964907
Hells87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть база с таблицей, в которой примерно 30млн строк. База весит примерно 20 Гб.
Создал триггер на обработку позиций и указал операцию в триггере "INSERT, UPDATE". триггер в определенном столбце выставляет значение NULL. теперь этот триггер я не могу остановить.
Т.е. триггер начинает обрабатывать дынные, долго долго думая, пытаюсь через sql запрос (DROP TRIGGER или DISABLE TRIGGER) его остановить и сервак пишет что ожидает выполнение запроса и висит. При этом начинает рости tempdb, пока не закончится место на жестком диске (свободно 400 Гб). Через контекстное меню тоже не отключается триггер, система говорит "превышение тайм-аута блокировки". Предполагаю что из-за операции UPDATE, триггер начинает по кругу отрабатывать, а за счет большой базы грузится система и не проходят команды на остановку триггера. Подскажите другой способ вырубить (удалить) триггер?
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39964935
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hells87,

kill
в смысле, ты убей процесс который его использует, а потом делай с триггером что хочешь
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39964938
Hells87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court,
я и по kill сразу понял)) спасибо, попробую
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39964943
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Триггеры - зло. Их сложно изменить на лету, т.к. большая вероятность дедлока.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39964959
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
риггеры - зло. Их сложно изменить на лету, т.к. большая вероятность дедлока.
А вероятность дедлока при изменении "на лету" процедур или функций гораздо ниже?
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39964960
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
L_argo
риггеры - зло. Их сложно изменить на лету, т.к. большая вероятность дедлока.
А вероятность дедлока при изменении "на лету" процедур или функций гораздо ниже?
Раз в 50-100, ИМХО.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39964962
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
Раз в 50-100, ИМХО.

И чем вызвана эта разница?
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39964966
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hells87,
Триггеры мощное средство но безусловно требуют квалификации
и иногда трудно отлаживаются - траблшутятся

@invm мне подсказывал способ как можно отключить триггер в конкетной сессиии

с помощью трюка в начале триггера
if exitsts ( #Tmp_triggers_disable) return

и создания такой временной таблицы #Tmp_triggers_disable
в начале сессии где надо отключить его


ps для отлакди в тригере можно юзать те же Select
pps вообщем подумать надо - если выбор за тобой - то возможно пока и отказаться от них
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39964979
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор
Hells87,
Триггеры мощное средство но безусловно требуют квалификации
и иногда трудно отлаживаются - траблшутятся

@invm мне подсказывал способ как можно отключить триггер в конкетной сессиии

с помощью трюка в начале триггера
if exitsts ( #Tmp_triggers_disable) return

и создания такой временной таблицы #Tmp_triggers_disable
в начале сессии где надо отключить его


ps для отлакди в тригере можно юзать те же Select
pps вообщем подумать надо - если выбор за тобой - то возможно пока и отказаться от них


На мой взгляд, триггер НЕ стоит вешать туда, где его предполагается включать/выключать. Сколько "стоит" стоит такая проверка (проверка наличия сторонней таблицы) в плане производительности?

По теме: вероятно неправильно спроектирован триггер - так как заср@ть 400ГБ триггером, который в определенном столбце выставляет значение NULL по базе в 20 гиг, - это очень круто ! Хорошо, если на забитом диске sp_who2 работает и kill выполняется...
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39964990
Hells87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
Hells87,

kill
в смысле, ты убей процесс который его использует, а потом делай с триггером что хочешь


Попробовал, в списке сессий висит "среда MS SQL Server Management Studio". отдельной задачи по триггеру нет. так что нечего тут убивать
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39964992
Hells87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор
Hells87,
Триггеры мощное средство но безусловно требуют квалификации
и иногда трудно отлаживаются - траблшутятся

@invm мне подсказывал способ как можно отключить триггер в конкетной сессиии

с помощью трюка в начале триггера
if exitsts ( #Tmp_triggers_disable) return

и создания такой временной таблицы #Tmp_triggers_disable
в начале сессии где надо отключить его


ps для отлакди в тригере можно юзать те же Select
pps вообщем подумать надо - если выбор за тобой - то возможно пока и отказаться от них


Так я этот триггер не могу поменять, потому что висит запрос.
Выбор за мной, но сейчас задача долбануть этот триггер.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39964999
Нестандартное мышление
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hells87,

А DISABLE TRIGGER не пробовали?
На крайняк DROP TRIGGER

авторТриггеры - зло! Согласен. Лучше JOB использовать и по отсечкам времени отрабатывать.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965003
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нестандартное мышление,

триггер нельзя отключить, пока он выполняется хотя бы в одном сеансе.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965007
Нестандартное мышление
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Нестандартное мышление,

триггер нельзя отключить, пока он выполняется хотя бы в одном сеансе.


Можно остановить агента и в server_triggers поставить 1 в is_disabled.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965008
Нестандартное мышление
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще. Надо такую структуру менять. Либо мощности как у гугла уже закупать. )))
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965016
Hells87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нестандартное мышление
Hells87,

А DISABLE TRIGGER не пробовали?
На крайняк DROP TRIGGER

авторТриггеры - зло! Согласен. Лучше JOB использовать и по отсечкам времени отрабатывать.

Пробовал. висит запрос и всё. Триггер видимо все ресурсы на себя забирает
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965024
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_
Гулин Федор
Hells87,
Триггеры мощное средство но безусловно требуют квалификации
и иногда трудно отлаживаются - траблшутятся

@invm мне подсказывал способ как можно отключить триггер в конкетной сессиии

с помощью трюка в начале триггера
if exitsts ( #Tmp_triggers_disable) return

и создания такой временной таблицы #Tmp_triggers_disable
в начале сессии где надо отключить его


ps для отлакди в тригере можно юзать те же Select
pps вообщем подумать надо - если выбор за тобой - то возможно пока и отказаться от них


На мой взгляд, триггер НЕ стоит вешать туда, где его предполагается включать/выключать. Сколько "стоит" стоит такая проверка (проверка наличия сторонней таблицы) в плане производительности?

По теме: вероятно неправильно спроектирован триггер - так как заср@ть 400ГБ триггером, который в определенном столбце выставляет значение NULL по базе в 20 гиг, - это очень круто ! Хорошо, если на забитом диске sp_who2 работает и kill выполняется...


В MSSQL есть смысл перед обновлением поля проверять, а не имеет ли это поле уже такое же значение.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965026
Hells87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hells87,
Сейчас пробуем базу перенести с резервной базы (там нет этого триггера).
Тогда еще вопрос: как тогда реализовать на базе MS SQL такую задачу? Внешняя прога складывает в таблицу значения, но необходимо, чтобы значения в определенном столбце удалялись. Либо надо триггер отладить, чтобы он работал только для новых записей, чтобы сервак не ложить.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965031
Hells87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin,
Согласен. Мало опыта работы с MSSQL. думал, ну не пойдет, отключу. А теперь отключить не получается. На маленькой базе всё работает нормально.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965037
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hells87
court
Hells87,

kill
в смысле, ты убей процесс который его использует, а потом делай с триггером что хочешь
Попробовал, в списке сессий висит "среда MS SQL Server Management Studio". отдельной задачи по триггеру нет. так что нечего тут убивать
И о чём это говорит?

О том, что в SSMS пользователь открыл транзакцию, сделал что то, на что срабатывает этот триггер, и задумался.

Поэтому триггер и заблокирован.

Посмотрите, кто это такой. Спросите у него, долго ли он будет держать открытой транзакцию.
Заставьте закрыть окно, а если он скажет "а чо я ничо не делал", то сделайте kill этой сессии, она ему не нужна.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965044
Hells87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,
Ну я предположил, что эта студия бала в которой я и сидел. Так как на серваке были еще запущены БД, я их в службах стопнул и в списке сессий осталась одна эта запись (было 3)
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965046
Hells87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hells87,
Всем спасибо. Пока искали решение, коллега перекинул базу с резервного сервака (на котором нет этого триггера). Триггер так и не получилось стопнуть.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965048
Hells87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hells87
Hells87,
Тогда еще вопрос: как тогда реализовать на базе MS SQL такую задачу? Внешняя прога складывает в таблицу значения, но необходимо, чтобы значения в определенном столбце удалялись. Либо надо триггер отладить, чтобы он работал только для новых записей, чтобы сервак не ложить.

Сейчас будем работать над этим вопросом
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965050
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hells87
Hells87,
Всем спасибо. Пока искали решение, коллега перекинул базу с резервного сервака (на котором нет этого триггера). Триггер так и не получилось стопнуть.
Жесть какая. Для отключения пользователей достаточно было сделать alter database ... set restricted_user with rollback immediate. Если же у вас бардак и пользователи являются админами, то тогда через single_user.
...
Рейтинг: 0 / 0
Принудительное отключение триггера
    #39965056
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hells87
alexeyvg,
Ну я предположил, что эта студия бала в которой я и сидел. Так как на серваке были еще запущены БД, я их в службах стопнул и в списке сессий осталась одна эта запись (было 3)
Возможно и так. Это легко было посмотреть в списке коннектов, есть ли там открытая транзакция. Возможно, это было открытое окно какого то дизайнера, например.

Вот и сделали бы kill, и всё бы получилось.
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Принудительное отключение триггера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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