2009-09-14 92 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