Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Отключение триггера в сессии  [new]
BlindG
Member

Откуда:
Сообщений: 89
Здраствуйте уважаемые!
Пожскажите пож. способ как можно отключить триггер на ссесию? А на другие он бы работал.
Нужно обновить некоторые строки в таблице, без триггера, при этом что-бы для других сессий он
срабатывал. Заранее все спасибо.
19 июн 09, 10:57    [7319391]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
Glory
Member

Откуда:
Сообщений: 104760
При BULK INSERT триггера по-умолчанию не срабатывают
19 июн 09, 10:59    [7319406]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
BlindG
Member

Откуда:
Сообщений: 89
BULK INSERT не подходит.
19 июн 09, 11:06    [7319458]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
На уровне сессии вы триггер не отключите. Только на уровне таблицы:
ALTER TABLE [имя] DISABLE TRIGGER [имя]
19 июн 09, 11:06    [7319461]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
BlindG
Member

Откуда:
Сообщений: 89
подсказали, что нужно двигаться в сторону CONTEXT_INFO, я с этим не работал, может, кто-чего подскажет, как это можно использовать ?
19 июн 09, 11:13    [7319507]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
Supra93
Member

Откуда:
Сообщений: 8174
BlindG
Здраствуйте уважаемые!
Пожскажите пож. способ как можно отключить триггер на ссесию? А на другие он бы работал.
Нужно обновить некоторые строки в таблице, без триггера, при этом что-бы для других сессий он
срабатывал. Заранее все спасибо.

Для юзера не устраивает?
19 июн 09, 11:15    [7319526]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
BlindG
Member

Откуда:
Сообщений: 89
То есть, что вы имеете ввиду ?
Можно оключить для конкретного юзера, под которым и провести обновление ?
19 июн 09, 11:18    [7319546]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
Glory
Member

Откуда:
Сообщений: 104760
BlindG
подсказали, что нужно двигаться в сторону CONTEXT_INFO, я с этим не работал, может, кто-чего подскажет, как это можно использовать ?

CONTEXT_INFO никак вам не позволит отключть триггер без изменения его текста
19 июн 09, 11:20    [7319558]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
BlindG
Member

Откуда:
Сообщений: 89
Glory
BlindG
подсказали, что нужно двигаться в сторону CONTEXT_INFO, я с этим не работал, может, кто-чего подскажет, как это можно использовать ?

CONTEXT_INFO никак вам не позволит отключть триггер без изменения его текста


триггер менять низя, печально ...
если вас не затруднит, пару слов почему именно нужно его менять ?
19 июн 09, 11:26    [7319593]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
По-простому, можно в начало триггера вставить
IF SUSER_SNAME()=N'ВашЛогин' RETURN
Тогда для Вашего логина триггер ничего не будет делать.

Или можно завести постоянную таблицу, каждая строка которой соответствует сессии.
В первой строке триггера проверять наличие записи для текущей сессии.
И если она есть - RETURN. Остаётся не забыть вставить в эту таблицу запись перед выполнением обновления.
По окончании - удалить эту запись (или сделать это в самом триггере).
19 июн 09, 11:26    [7319594]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
BlindG
Member

Откуда:
Сообщений: 89
Supra93
BlindG
Здраствуйте уважаемые!
Пожскажите пож. способ как можно отключить триггер на ссесию? А на другие он бы работал.
Нужно обновить некоторые строки в таблице, без триггера, при этом что-бы для других сессий он
срабатывал. Заранее все спасибо.

Для юзера не устраивает?


То есть, что вы имеете ввиду ?
Можно оключить для конкретного юзера, под которым и провести обновление ?
19 июн 09, 11:26    [7319599]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
BlindG
Supra93
BlindG
Здраствуйте уважаемые!
Пожскажите пож. способ как можно отключить триггер на ссесию? А на другие он бы работал.
Нужно обновить некоторые строки в таблице, без триггера, при этом что-бы для других сессий он
срабатывал. Заранее все спасибо.

Для юзера не устраивает?


То есть, что вы имеете ввиду ?
Можно оключить для конкретного юзера, под которым и провести обновление ?

НЕТ. Вам же уже сказали что нужно только менять текст триггера для получения нужного вам функционала. без изменения текста триггера он ВСЕГДА будет срабатывать вне зависимости от сессии или юзера.
19 июн 09, 11:29    [7319607]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
BlindG
Member

Откуда:
Сообщений: 89
Fire83
BlindG
Supra93
BlindG
Здраствуйте уважаемые!
Пожскажите пож. способ как можно отключить триггер на ссесию? А на другие он бы работал.
Нужно обновить некоторые строки в таблице, без триггера, при этом что-бы для других сессий он
срабатывал. Заранее все спасибо.

Для юзера не устраивает?


То есть, что вы имеете ввиду ?
Можно оключить для конкретного юзера, под которым и провести обновление ?

НЕТ. Вам же уже сказали что нужно только менять текст триггера для получения нужного вам функционала. без изменения текста триггера он ВСЕГДА будет срабатывать вне зависимости от сессии или юзера.


Не хочу показать нудным, но возможность есть. И хотелось бы узнать.
Просто возможности спросить у человека, как он это делал сейчас нету.
А время идет. Может будут еще какие-то идеи ?
19 июн 09, 11:42    [7319684]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
Fire83
Member

Откуда: Гомель-Минск
Сообщений: 474
BlindG,

Все известные мне способы к сожалению подразумевают изменение триггера, вот статья
где рассмотрены способы:
[url=]http://www.mssqltips.com/tip.asp?tip=1591[/url]
19 июн 09, 11:50    [7319753]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36803
BlindG
Не хочу показать нудным, но возможность есть. И хотелось бы узнать.
Просто возможности спросить у человека, как он это делал сейчас нету.
А время идет. Может будут еще какие-то идеи ?
Он вам наврал. Или вы его не так поняли. Не хочу показаться нудным, но изменить алгоритм работы триггера не меняя его текст не выйдет.
19 июн 09, 11:50    [7319758]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
Glory
Member

Откуда:
Сообщений: 104760
BlindG

Не хочу показать нудным, но возможность есть. И хотелось бы узнать.
Просто возможности спросить у человека, как он это делал сейчас нету.
А время идет. Может будут еще какие-то идеи ?

- Возможности физически отключить триггер только для одной сессии нет. Можно заблокировать другие сессии на время отключения триггера

- Возможности логически отключить триггер без изменения его текста нет.
19 июн 09, 11:51    [7319762]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
BlindG
Member

Откуда:
Сообщений: 89
Fire83
BlindG,

Все известные мне способы к сожалению подразумевают изменение триггера, вот статья
где рассмотрены способы:
[url=]http://www.mssqltips.com/tip.asp?tip=1591[/url]


За ссылку - спасибо, статья хорошая!
19 июн 09, 13:11    [7320294]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
ветерочек
Member

Откуда: СПБ
Сообщений: 153
BlindG
Здраствуйте уважаемые!
Пожскажите пож. способ как можно отключить триггер на ссесию? А на другие он бы работал.
Нужно обновить некоторые строки в таблице, без триггера, при этом что-бы для других сессий он
срабатывал. Заранее все спасибо.


создай похожий триггер добавив в него
что нибудь типа

IF SUSER_SNAME()=N'ВашЛогин' RETURN
а этот задизейбли :))
19 июн 09, 13:59    [7320633]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к MS SQL через интернет  [new]
Ыукупф
Member

Откуда:
Сообщений: 36
можно просто сказать, что такой триггер должен выполняться первым
19 июн 09, 20:02    [7323042]     Ответить | Цитировать Сообщить модератору
 Re: Подключение к MS SQL через интернет  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Ыукупф
можно просто сказать, что такой триггер должен выполняться первым
И что? Остальные выполняться не будут?
19 июн 09, 20:10    [7323060]     Ответить | Цитировать Сообщить модератору
 Re: Скалрная функция, увеличение быстродействия  [new]
Ыукупф
Member

Откуда:
Сообщений: 36
iap,

что-то я промахнулся :) почему-то про отмену действий подумал и вместо ретурна роллбэк прочитал
19 июн 09, 23:42    [7323493]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Как один из вариантов отключения триггера для любой сессии. Необходимы изменения в триггер!

В начале когда триггера:

if object_id('tempdb..#flagToDisableTriggerName') is not null
return

Перед вызовом действия, которое провоцирует триггер. Добавляем следующие строки чтобы отключить его:

create table #flagToDisableTriggerName (a1 int)
update table_with_trigger set..

Область действия таких флагов - сессия.
20 июн 09, 10:33    [7323780]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
BlindG
Member

Откуда:
Сообщений: 89
Александр Волок (def1983)
Как один из вариантов отключения триггера для любой сессии. Необходимы изменения в триггер!

В начале когда триггера:

if object_id('tempdb..#flagToDisableTriggerName') is not null
return

Перед вызовом действия, которое провоцирует триггер. Добавляем следующие строки чтобы отключить его:

create table #flagToDisableTriggerName (a1 int)
update table_with_trigger set..

Область действия таких флагов - сессия.


Интересный вариант. Спасибо.
22 июн 09, 12:04    [7327328]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
vov@
Member

Откуда: Днепропетровск
Сообщений: 110
Интересный вариант, но что-то здесь не так в конституции...
Можно пару слов о функционале этого триггера..?
Что он делает и по какому условию будет создаваться временная таблица?
22 июн 09, 13:03    [7327762]     Ответить | Цитировать Сообщить модератору
 Re: Отключение триггера в сессии  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
vov@
Интересный вариант, но что-то здесь не так в конституции...
Можно пару слов о функционале этого триггера..?
Что он делает и по какому условию будет создаваться временная таблица?

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

В триггере же стоит проверка на наличие временной таблицы по ее имени. Если таблица была создана, триггер не отрабатывает...
22 июн 09, 16:15    [7329425]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить