与列出特定事件类型相比,为 DDL_DATABASE_LEVEL_EVENTS 使用触发器是否有任何风险?

Are there any risks to using triggers for DDL_DATABASE_LEVEL_EVENTS vs listing specific event types?

我有一个 DDL 触发器,可以将数据库架构更改记录到 table 以用于审计目的。我注意到我所做的一些更改被遗漏了(比如创建一个类型 - CREATE_TYPE)并且需要更新它。

我的理解是,DDL 事件总是由人为触发的。真的吗?这样的触发器是否有可能导致查询失败?

这个触发器定义如下:

ALTER TRIGGER [name_of_trigger]
ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE, CREATE_INDEX, ALTER_INDEX, DROP_INDEX, ...

像这样使用包罗万象的 DDL_DATABASE_LEVEL_EVENTS 有任何风险吗?

ALTER TRIGGER [name_of_trigger]
ON DATABASE
FOR DDL_DATABASE_LEVEL_EVENTS

或者指定我知道我需要的所有类型是否更安全或更好?

我正在使用这样的触发器(针对 DDL_DATABASE_LEVEL_EVENTS),我特别排除了事件类型 UPDATE_STATISTICS。您可能还想避免 ALTER INDEX ... REBUILDALTER INDEX ... REORGANIZE.