SQLServer EVENTDATA()函数来获取DDL 触发器信息
更新时间:2009年07月09日 13:49:53 作者:
SQL Server 2005/2008中可以使用EVENTDATA函数来获取DDL触发器的上下文,从而在ROLLBACK之前截获DDL信息。EVENTDATA返回XML字段,下面的例子显示如何截获Drop Table的DDL信息。
复制代码 代码如下:
-- 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 多条件组合查询,并根据指定类别找出所有最小子类别的SQL语句备忘
多条件组合查询,并根据指定类别找出所有最小子类别的SQL语句备忘2009-06-06SQL Server在AlwaysOn中使用内存表的“踩坑”记录
这篇文章主要给大家介绍了关于SQL Server在AlwaysOn中使用内存表的一些"踩坑"记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习下吧。2017-09-09sql update 触发器 可获得被update的行的信息
sql update 触发器 可获得被update的行的信息,需要的朋友可以参考下。2010-06-06SQL Server遍历表中记录的2种方法(使用表变量和游标)
遍历表一般都要用到游标在SQL Server中可以很容易的用游标实现循环实现遍历表中记录,本文将介绍使用表变量和游标实现数据库中表的遍历,感兴趣的朋友可以了解下本文,或许可以帮助到你2013-02-02
最新评论