ddl 触发
USE Test;
GO
CREATE TABLE alter_log (PostTime datetime, DB_User nvarchar(100), Event nvarchar(100),dbName nvarchar(32), TSQL nvarchar(2000),EventData xml);
GO
CREATE TRIGGER ddl_alter_log
ON all server
after CREATE_TABLE,DROP_TABLE,ALTER_TABLE,CREATE_PROCEDURE,ALTER_PROCEDURE,DROP_PROCEDURE
AS
INSERT into Test..alter_log
(PostTime, DB_User, Event, dbName,TSQL)
VALUES
(GETDATE(),
CONVERT(nvarchar(100), CURRENT_USER),
EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),
DB_NAME(),
EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)') )
GO
ENABLE TRIGGER ddl_alter_log ON ALL SERVER
这个有什么问题吗,该怎么处理呢?
GO
CREATE TABLE alter_log (PostTime datetime, DB_User nvarchar(100), Event nvarchar(100),dbName nvarchar(32), TSQL nvarchar(2000),EventData xml);
GO
CREATE TRIGGER ddl_alter_log
ON all server
after CREATE_TABLE,DROP_TABLE,ALTER_TABLE,CREATE_PROCEDURE,ALTER_PROCEDURE,DROP_PROCEDURE
AS
INSERT into Test..alter_log
(PostTime, DB_User, Event, dbName,TSQL)
VALUES
(GETDATE(),
CONVERT(nvarchar(100), CURRENT_USER),
EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),
DB_NAME(),
EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)') )
GO
ENABLE TRIGGER ddl_alter_log ON ALL SERVER
这个有什么问题吗,该怎么处理呢?
...全文
相关推荐
一个DDL触发器例子(阻止DDL并记警告日志)
在Oracle数据库管理中,DDL触发器是一种特殊的数据库对象,主要用于在数据定义语言(DDL)操作如创建、修改或删除表结构时自动执行预定义的程序逻辑。"一个DDL触发器例子(阻止DDL并记警告日志)
oracle安全审计之登录登出、ddl操作记录触发器
, USER, :SQLCOMMAND);END;/```这个触发器会在每次执行DDL语句后记录操作的时间、执行用户和执行的DDL语句。
SQL Server误区30日谈 第4天 DDL触发器就是INSTEAD OF触发器
然而,一个常见的误解是将DDL触发器等同于INSTEAD OF触发器,这实际上是不准确的。DDL触发器的运作机制实际上类似于AFTER触发器,它在DDL操作执行之后触发。
SQL Server 2008中的代码安全(二) DDL触发器与登录触发器
这两类触发器允许在特定的数据库事件发生时执行自定义的逻辑,以实现业务规则的强制执行。首先,DDL触发器是在数据库中对数据定义语言(DDL)事件做出反应的特殊类型触发器。
SQLServer EVENTDATA()函数来获取DDL 触发器信息
此外,过度使用DDL触发器可能会增加系统的开销,因为每次DDL操作都需要额外的处理步骤。因此,在设计和使用DDL触发器时,应谨慎考虑性能和需求的平衡。


