DDL 触发器未监视 table 个触发器事件

DDL trigger not monitoring table trigger events

我有以下 DDL 触发器:

CREATE TABLE ddl_log (PostTime datetime, DB_User nvarchar(100), Event nvarchar(100), TSQL nvarchar(2000));
GO
CREATE TRIGGER log 
ON DATABASE 
FOR DDL_DATABASE_LEVEL_EVENTS 
AS
DECLARE @data XML;
SET @data = EVENTDATA();
INSERT ddl_log 
   (PostTime, DB_User, Event, TSQL) 
   VALUES 
   (GETDATE(), 
   CONVERT(nvarchar(100), CURRENT_USER), 
   @data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'), 
   @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)') ) ;
GO

当我使用 SSMS(即 UI)来 enable/disable 一个 table 触发器时,一个事件被插入到 table.

但是,当我使用 T-SQL 时如下:

ENABLE trigger tr_mytable ON mytable

没有事件插入 table。

这是设计使然吗?

这是因为 GUI 使用导致 DDL 触发器触发的旧语法 ALTER TABLE DISABLE TRIGGER,但新语法 'DISABLE TRIGGER' 不会。

它也没有被默认跟踪捕获,前段时间你可以在这里投票这个问题:Fire a DDL TRIGGER when the new syntax "DISABLE TRIGGER" is executed

现在我关闭了,因为不会修复