与列出特定事件类型相比,为 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 ... REBUILD
和 ALTER INDEX ... REORGANIZE
.
我有一个 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 ... REBUILD
和 ALTER INDEX ... REORGANIZE
.