SQL Server EVENTDATA()函数来获取DDL 触发器信息

2022-11-12 09:48:28
内容摘要
这篇文章主要为大家详细介绍了SQL Server EVENTDATA()函数来获取DDL 触发器信息,具有一定的参考价值,可以用来参考一下。 对此感兴趣的朋友,看看idc笔记做的技术笔记! 代码如下
文章正文

这篇文章主要为大家详细介绍了SQL Server EVENTDATA()函数来获取DDL 触发器信息,具有一定的参考价值,可以用来参考一下。

对此感兴趣的朋友,看看idc笔记做的技术笔记!

代码如下:


-- Create a log table 
CREATE TABLE TriggerLog (LogInfo xml) 

-- Create a dummy table to delete later on 
CREATE TABLE TableToDelete (Id int PRIMARY KEY) 

-- 新建一个新表,作为删除实验表 
INSERT INTO TableToDelete VALUES(1) 
GO 

-- 创建一个Drop Table 的 DDL 
CREATE TRIGGER StopTableDrop ON DATABASE AFTER DROP_TABLE 
AS 
DECLARE @EventData AS xml 
SET @EventData = EVENTDATA() -- 必须要在rollback之前截获DDL信息 
ROLLBACK 
PRINT 'DROP TABLE attempt in database ' + DB_NAME() + '.' 
INSERT INTO TriggerLog VALUES(@EventData)
执行如下删除操作:DROP TABLE TableToDelete会触发上面的DDL,从而回滚操作。执行下面的Sql:SELECT * FROM TriggerLog查看刚才截获的DDL信息。

注:关于SQL Server EVENTDATA()函数来获取DDL 触发器信息的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!