Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ускорить отключение триггера / 25 сообщений из 28, страница 1 из 2
11.05.2018, 19:02
    #39643432
пятый2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
Добрый день.
Очень долго отрабатывают команды:
Код: sql
1.
ALTER TABLE big_table DISABLE TRIGGER t1


и
Код: sql
1.
ALTER TABLE big_table ENABLE TRIGGER t1




Таблица большая и активно используется.

Можно ли как-то ускорить включение-отключение триггера?
...
Рейтинг: 0 / 0
11.05.2018, 19:07
    #39643433
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
пятый2Можно ли как-то ускорить включение-отключение триггера?Можно. Прекратив активно использовать таблицу.
А еще лучше вообще отказаться от идеи запрета/разрешения триггеров в прикладном коде.
...
Рейтинг: 0 / 0
11.05.2018, 19:34
    #39643437
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
пятый2Добрый день.
Очень долго отрабатывают команды:
Код: sql
1.
ALTER TABLE big_table DISABLE TRIGGER t1


и
Код: sql
1.
ALTER TABLE big_table ENABLE TRIGGER t1



Таблица большая и активно используется.

Можно ли как-то ускорить включение-отключение триггера?

Яволь.

В начало триггера включаешь проверку строки в табличке.

Код: sql
1.
if exists( select * from aTable where Value = 'triggerName') return;



И... бинго!!!
...
Рейтинг: 0 / 0
12.05.2018, 11:28
    #39643541
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
Так реализуется и "отключение триггера ТОЛЬКО ДЛЯ КОНКРЕТНОГО @@SPID".

Ну, типа, для себя отключен - для всех прочих работает.
...
Рейтинг: 0 / 0
12.05.2018, 18:41
    #39643620
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
aleks222Так реализуется и "отключение триггера ТОЛЬКО ДЛЯ КОНКРЕТНОГО @@SPID".Каким же образом, если в твоей проверке наличия строки, нет даже намека на SPID?
А даже если бы и был, что случится, если забудешь эту строку удалить?


пятый2,

Безопасный способ игнорировать триггер в рамках только своего соединения, это добавить в его начало
Код: sql
1.
2.
if object_id('tempdb..#t1__bypass', 'U') is not null
 return;

Теперь для игнорирования достаточно просто создать временную таблицу #t1__bypass. Даже если забыть ее удалить, это никак не повлияет на другие сессии.
...
Рейтинг: 0 / 0
12.05.2018, 18:52
    #39643623
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
invmaleks222Так реализуется и "отключение триггера ТОЛЬКО ДЛЯ КОНКРЕТНОГО @@SPID".Каким же образом, если в твоей проверке наличия строки, нет даже намека на SPID?
А даже если бы и был, что случится, если забудешь эту строку удалить?


пятый2,

Безопасный способ игнорировать триггер в рамках только своего соединения, это добавить в его начало
Код: sql
1.
2.
if object_id('tempdb..#t1__bypass', 'U') is not null
 return;

Теперь для игнорирования достаточно просто создать временную таблицу #t1__bypass. Даже если забыть ее удалить, это никак не повлияет на другие сессии.

1. Ну дык, намекни. Это все решаемо.
2. Он небезопасен, ибо "каждый может создать таблицу".
...
Рейтинг: 0 / 0
12.05.2018, 19:46
    #39643641
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
aleks222Он небезопасен, ибо "каждый может создать таблицу"Да ну? Временную, видимую всем?
...
Рейтинг: 0 / 0
12.05.2018, 20:16
    #39643650
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
invmaleks222Он небезопасен, ибо "каждый может создать таблицу"Да ну? Временную, видимую всем?
Видимо, подразумевалось, что каждый может создать такую таблицу для себя, и отключить для себя же триггер.
...
Рейтинг: 0 / 0
12.05.2018, 20:38
    #39643652
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
Сон Веры ПавловныВидимо, подразумевалось, что каждый может создать такую таблицу для себя, и отключить для себя же триггер.Возможно. Это легко лечится, в отличии от руления через SPID.
...
Рейтинг: 0 / 0
13.05.2018, 11:28
    #39643796
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
invmСон Веры ПавловныВидимо, подразумевалось, что каждый может создать такую таблицу для себя, и отключить для себя же триггер.Возможно. Это легко лечится, в отличии от руления через SPID.
Выдирание зуба через задний проход?
...
Рейтинг: 0 / 0
13.05.2018, 12:42
    #39643811
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
aleks222Выдирание зуба через задний проход?Ну если так называть использование штатных механизмов вместо самопальных велосипедов, то да.
...
Рейтинг: 0 / 0
13.05.2018, 12:44
    #39643813
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
invmaleks222Выдирание зуба через задний проход?Ну если так называть использование штатных механизмов вместо самопальных велосипедов, то да.

О великий гуру!!!
Не карай меня неразумного!
Я ж не знал, что временные таблицы предназначены для отключения триггеров.

ЗЫ. Не неси чушь.
...
Рейтинг: 0 / 0
13.05.2018, 13:43
    #39643836
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
aleks222Я ж не знал, что временные таблицы предназначены для отключения триггеров.А постоянные таблицы предназначены для отключения триггеров?aleks222ЗЫ. Не неси чушь.Могу тебе порекомендовать сделать то же самое, предварительно прекратив надувать щеки и включив уже мозг.
...
Рейтинг: 0 / 0
13.05.2018, 15:40
    #39643885
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
Еще есть способ с SET CONTEXT_INFO.
...
Рейтинг: 0 / 0
14.05.2018, 06:29
    #39644107
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
invmaleks222Я ж не знал, что временные таблицы предназначены для отключения триггеров.А постоянные таблицы предназначены для отключения триггеров?aleks222ЗЫ. Не неси чушь.Могу тебе порекомендовать сделать то же самое, предварительно прекратив надувать щеки и включив уже мозг.

Как ни крути

Код: sql
1.
ALTER TABLE big_table DISABLE TRIGGER t1



отключает триггер на постоянно. И контроль доступа к постоянной таблице проще организовать.
Так что, опять пердеж в лужу.
...
Рейтинг: 0 / 0
14.05.2018, 09:51
    #39644171
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
aleks222И контроль доступа к постоянной таблице проще организовать.Проверить членство в определенной роли неимоверно сложно организовать?
aleks222Так что, опять пердеж в лужу.Видимо пишешь смотрясь в зеркало?
...
Рейтинг: 0 / 0
14.05.2018, 10:15
    #39644193
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
invmaleks222И контроль доступа к постоянной таблице проще организовать.Проверить членство в определенной роли неимоверно сложно организовать?
aleks222Так что, опять пердеж в лужу.Видимо пишешь смотрясь в зеркало?

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

Приступай.

ЗЫ. Если нужно автоотключение отключения по разрыву сессии - это делается гораздо проще. Через sp_getapplock @Owner= 'Session'.
...
Рейтинг: 0 / 0
14.05.2018, 10:24
    #39644207
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
aleks222invmпропущено...
Проверить членство в определенной роли неимоверно сложно организовать?
пропущено...
Видимо пишешь смотрясь в зеркало?

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

Приступай.

ЗЫ. Если нужно автоотключение отключения по разрыву сессии - это делается гораздо проще. Через sp_getapplock @Owner= 'Session'.
что же делает триггер, который можно отключить считая это обыденной ситуацией.
Использем модель описанную invm для обхода части логики триггера (допустим не писать историю/ без проверки бизнес-прав и т.п.) но что бы взять и просто выбросить...
...
Рейтинг: 0 / 0
14.05.2018, 10:30
    #39644214
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
aleks222Тебе, страдалец, осталось совсем ерунда: решить проблему с постоянным отключением триггера через временную таблицу.Страдалец у нас ты - вечно являешься пострадавшим от собственнолй глупости
Продолжай генерировать бредовые идеи - это твой конек.
...
Рейтинг: 0 / 0
14.05.2018, 10:36
    #39644223
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
invmaleks222Тебе, страдалец, осталось совсем ерунда: решить проблему с постоянным отключением триггера через временную таблицу.Страдалец у нас ты - вечно являешься пострадавшим от собственнолй глупости
Продолжай генерировать бредовые идеи - это твой конек.
Ну да, твои гениальные идеи с двойной проверкой таблички и роли - несомненный верх совершенства.
...
Рейтинг: 0 / 0
14.05.2018, 11:26
    #39644281
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
aleks222Ну да, твои гениальные идеи с двойной проверкой таблички и роли - несомненный верх совершенства.Ну наконец-то покажи нам уже свою гениальную и безопасную реализацию через постоянную таблицуaleks222"отключение триггера ТОЛЬКО ДЛЯ КОНКРЕТНОГО @@SPID".
...
Рейтинг: 0 / 0
14.05.2018, 11:44
    #39644300
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
invmaleks222Ну да, твои гениальные идеи с двойной проверкой таблички и роли - несомненный верх совершенства.Ну наконец-то покажи нам уже свою гениальную и безопасную реализацию через постоянную таблицуaleks222"отключение триггера ТОЛЬКО ДЛЯ КОНКРЕТНОГО @@SPID".

Зачем?
У меня работает.
Тредстартеру не надо.
Писать тривиальный код - мне лень.
...
Рейтинг: 0 / 0
14.05.2018, 11:56
    #39644308
пятый2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
aleks222Тредстартеру не надо.


Добрый день, очень надо.
...
Рейтинг: 0 / 0
14.05.2018, 12:11
    #39644319
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
aleks222Зачем?
У меня работает.
Тредстартеру не надо.
Писать тривиальный код - мне лень.Если у тебя есть, то зачем писать?
В общем, как обычно - сплошной трындеж и надувание щек.
...
Рейтинг: 0 / 0
14.05.2018, 12:12
    #39644322
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ускорить отключение триггера
пятый2Добрый день, очень надо.Очередной нечитатель? Прямым текстом было показано как сделать.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / ускорить отключение триггера / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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