我有一个DDL触发器,用于将数据库模式更改记录到表中以进行审核。我注意到我遗漏了一些更改(例如创建类型-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
或者指定我知道需要的所有类型是更安全还是更好的做法?
答案 0 :(得分:0)
我正在使用这样的触发器(用于DDL_DATABASE_LEVEL_EVENTS
),并且我专门排除了事件类型UPDATE_STATISTICS
。您可能还希望避免使用ALTER INDEX ... REBUILD
和ALTER INDEX ... REORGANIZE
。