2009-09-14 116 views
2

我在sql server表中有触发器。这个触发器已经消失。有没有系统的东西可能导致它被删除?sql触发器消失

这个数据库没有复制。

+1

它的gotdamn触发gremlins! – Will 2009-09-14 14:27:28

回答

1

除了Randolf说的话,其他开发者或dba可能会放弃触发器,因为它干扰了他或她想做的事情。不是每个人都明白做这种愚蠢的事情的后果,所以他们发生。如果是这种情况,这将是一个很好的例子,说明需要更正式的流程并限制生产。

希望你有源代码管理下的触发器,可以很容易地重新创建它。

你也可以考虑实现DDL触发器,以便将来可以防止这种事情发生,或者至少看看是谁做的。

+0

DDL触发器将帮助我找到罪魁祸首! – mson 2009-09-15 09:26:52

+0

这次找不到罪魁祸首,但如果它再次发生的话。 – HLGEM 2009-09-15 13:15:04

4

重新创建表格可以删除触发器。禁用触发器也是可能的。可能它是其中一个选项?

+0

表未被重新创建。触发器消失了,没有被禁用。 – mson 2009-09-15 08:26:49

4

2个选项,如果消失

  • DROP/CREATE TABLE ...
  • DROP TRIGGER ...

如果不是working_

  • ALTER TABLE的选项.. 。DISABLE TRIGGER ...

你可以看到这个表是否被重新使用。当然,它不会告诉你是谁...

SELECT create_date, modify_date FROM sys.objects WHERE name = 'MyTable' 

例如,通过SSMS GUI发生错误的表更改,可以删除触发器。但是没有系统的过程来随机放弃触发器:它需要某人采取明确的行动。

+0

最近有人从redgate购买了sqlcompare。我怀疑这是不是罪魁祸首... – mson 2009-09-15 08:29:15

+0

我怀疑它:与SSMS相比,这是一个非常安全的工具。 – gbn 2009-09-15 09:28:54