Если вы можете понять это, вы настоящий гуру SQL! Это одна из самых странных вещей, которые я когда-либо видел.
Я добавил триггер к таблице в нашей базе данных. Сервер SQL 2008. Триггер не делает ничего особенно сложного. Просто изменяет поле LastUpdated в таблице при изменении определенных полей. Это триггер «после обновления».
Существует большое унаследованное приложение C ++, которое выполняет все виды огромных запросов к этой базе данных. Каким-то образом (я понятия не имею, как) он удаляет этот триггер. Он не удаляет другие триггеры, и я уверен, что он не сбрасывает явно триггер или таблицу. Разработчики этого приложения даже ничего не знают о моих триггерах.
Как это возможно ??
Я попытался запустить трассировку с использованием SQL Server Profiler, и я просмотрел каждую отправляемую команду и выполнил их с помощью SQL Management Studio, но на мой триггер это не повлияло. Кажется, это происходит только когда я запускаю приложение. WTF: (
UPDATE:
Извините, я не хочу тратить ваше время. Я только что понял, что если я изменю имя триггера, он не будет удален. Кроме того, если я изменю триггер, чтобы он вообще ничего не делал, он все равно будет удален. Из этого я могу только догадываться, что другие разработчики явно удаляют его, но я искал в трассировке имя триггера, а его там нет. Я буду беспокоить их и посмотрю, что они скажут. Спасибо за предложения.
ОБНОВЛЕНИЕ 2:
Другие разработчики считают, что они не удаляют его явно. Он не существует в sys.objects или sys.triggers, так что это не сбой с SSMS. Так растерянно :( Думаю, я просто переименую его и надеюсь на лучшее? Не могу придумать, что еще можно попробовать. Несколько комментариев ниже спрашивают, удаляется ли триггер, или он просто отключен, или не работает. Как я уже говорил, он полностью удаляется. Кроме того, проблема не связана с фактическим содержимым триггера. Как я уже говорил, я удаляю содержимое и заменяю каким-то чрезвычайно простым кодом, который ничего не делает, затем он все еще удаляется.
Приветствия
Mark