SQLServer EVENTDATA()函數來獲取DDL 觸發(fā)器信息
更新時間:2009年07月09日 13:49:53 作者:
SQL Server 2005/2008中可以使用EVENTDATA函數來獲取DDL觸發(fā)器的上下文,從而在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
-- 創(chuàng)建一個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)
執(zhí)行如下刪除操作:
DROP TABLE TableToDelete
會觸發(fā)上面的DDL,從而回滾操作。
執(zhí)行下面的Sql:
SELECT * FROM TriggerLog
查看剛才截獲的DDL信息。
相關文章
sql 多條件組合查詢,并根據指定類別找出所有最小子類別的SQL語句備忘
多條件組合查詢,并根據指定類別找出所有最小子類別的SQL語句備忘2009-06-06SQL Server在AlwaysOn中使用內存表的“踩坑”記錄
這篇文章主要給大家介紹了關于SQL Server在AlwaysOn中使用內存表的一些"踩坑"記錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習下吧。2017-09-09sql update 觸發(fā)器 可獲得被update的行的信息
sql update 觸發(fā)器 可獲得被update的行的信息,需要的朋友可以參考下。2010-06-06SQL Server遍歷表中記錄的2種方法(使用表變量和游標)
遍歷表一般都要用到游標在SQL Server中可以很容易的用游標實現循環(huán)實現遍歷表中記錄,本文將介紹使用表變量和游標實現數據庫中表的遍歷,感興趣的朋友可以了解下本文,或許可以幫助到你2013-02-02