Я работаю с SQL Server 2005, и у меня есть триггер в таблице, которая копирует удаления в другую таблицу. Я не могу полностью удалить этот триггер. Моя проблема заключается в том, что мы разработали стратегию архивирования для этой таблицы. Мне нужен способ «приостановки» триггера, когда хранимый процесс, который выполняет архивирование.SQL Server: приостановить запуск
ответ
Более подробная информация будет полезной в отношении того, как процедура обращается к данным, но при условии, что вы просто получаете данные, а затем удаляете ее из таблицы и хотите отключить триггер для этого процесса, вы можете сделать следующее
DISABLE TRIGGER trg ON tbl;
затем
ENABLE TRIGGER trg ON tbl;
для продолжительности процедуры.
Это работает только для SQL 2005+
если DISABLE TRIGGER/ENABLE TRIGGER
не вариант по какой-то причине, вы можете создать таблицу с одной строкой, которая будет служить в качестве флага для запуска.
Альтернативный метод - использовать Context_Info для его отключения в течение одного сеанса, позволяя другим сеансам продолжать запускать триггер.
Context_Info
- это переменная, относящаяся к сеансу. Его значение можно изменить с помощью SET Context_Info
.
Триггер будет в основном выглядеть следующим образом:
USE AdventureWorks;
GO
-- creating the table in AdventureWorks database
IF OBJECT_ID('dbo.Table1') IS NOT NULL
DROP TABLE dbo.Table1
GO
CREATE TABLE dbo.Table1(ID INT)
GO
-- Creating a trigger
CREATE TRIGGER TR_Test ON dbo.Table1 FOR INSERT,UPDATE,DELETE
AS
DECLARE @Cinfo VARBINARY(128)
SELECT @Cinfo = Context_Info()
IF @Cinfo = 0x55555
RETURN
PRINT 'Trigger Executed'
-- Actual code goes here
-- For simplicity, I did not include any code
GO
Если вы хотите, чтобы предотвратить триггер выполняется, вы можете сделать следующее:
SET Context_Info 0x55555
INSERT dbo.Table1 VALUES(100)
Перед выдачей оператора INSERT, контекст info установлено в значение. В триггере мы сначала проверяем, совпадает ли значение контекстной информации с объявленным значением. Если да, триггер просто вернется без выполнения его кода, иначе срабатывает триггер.
- 1. SQL Server Запуск Paramenter
- 2. Запуск запуска SQL Server
- 3. Запуск MS SQL Server
- 4. Как приостановить запуск деятельности
- 5. Могу ли я временно приостановить SharePoint Server + IIS + SQL Server?
- 6. Несколько версий SQL Server Запуск
- 7. Запуск SQL Server на EC2
- 8. Запуск экземпляра SQL Server 2008
- 9. Запуск локальной копии SQL Server
- 10. Запуск цикла в SQL Server
- 11. Можно ли приостановить запрос SQL?
- 12. Запуск пакетов DTS на SQL Server 2012
- 13. Запуск запроса SQL Server по ClickOnce
- 14. Остановить запуск SQL Server до необходимого
- 15. Запуск SQL Server временно на ноутбуке
- 16. SQL Server - Запуск Всего с переносом вперед
- 17. Запуск SQL Server на веб-сервере
- 18. Запуск хранимой процедуры SQL Server из Excel
- 19. Запуск SQL Server 2000 Задание программно
- 20. Запуск пакетов DTS с SQL Server 2008R2
- 21. SQL Server - Запуск больших файлов сценариев
- 22. Запуск баланса в SQL Server 2012
- 23. SQL Server 2005: запуск/остановка сценария TSQL
- 24. Запуск задания SQL Server из другого задания
- 25. Запуск запросов SQL Server с удаленного компьютера
- 26. Запуск Mantis на MS SQL Server
- 27. Запуск Powershell через SQL Server Задание
- 28. SQL Server: запуск по не вставленной строке
- 29. Запуск пользовательского сценария в SQL Server Express
- 30. Обходные автоматические процедуры, как запуск SQL Server