DDL触发器不监视表的触发事件
问题描述:
我有以下DDL触发器: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)以启用/禁用一个表触发器,一个事件被插入到表中。
然而,当我使用T-SQL如下:
ENABLE trigger tr_mytable ON mytable
没有事件被插入到表中。
这是设计吗?
答
这是因为GUI使用导致DDL触发器触发的传统语法ALTER TABLE DISABLE TRIGGER
,但新语法'DISABLE TRIGGER'没有。
它不是默认跟踪逮住过,前一段时间,你可以投这个问题就在这里:Fire a DDL TRIGGER when the new syntax "DISABLE TRIGGER" is executed
现在我的封闭,不会解决