SQLServer EVENTDATA()函數(shù)來獲取DDL 觸發(fā)器信息
更新時間:2009年07月09日 13:49:53 作者:
SQL Server 2005/2008中可以使用EVENTDATA函數(shù)來獲取DDL觸發(fā)器的上下文,從而在ROLLBACK之前截獲DDL信息。EVENTDATA返回XML字段,下面的例子顯示如何截獲Drop Table的DDL信息。
復(fù)制代碼 代碼如下:
-- 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信息。
相關(guān)文章
sql 多條件組合查詢,并根據(jù)指定類別找出所有最小子類別的SQL語句備忘
多條件組合查詢,并根據(jù)指定類別找出所有最小子類別的SQL語句備忘2009-06-06sql server Bulk Insert命令詳細(xì)
這篇文章主要介紹了sql server Bulk Insert命令詳細(xì) ,需要的朋友可以參考下2015-08-08Sql Server 2000 行轉(zhuǎn)列的實現(xiàn)(橫排)
在一些統(tǒng)計報表中,常常會用到將行結(jié)果用列形式展現(xiàn)。我們這里用一個常見的學(xué)生各門課程的成績報表,來實際展示實現(xiàn)方法。2008-11-11SQL Server導(dǎo)入導(dǎo)出數(shù)據(jù)時最常見的一個錯誤解決方法
這篇文章主要介紹了SQL Server導(dǎo)入導(dǎo)出數(shù)據(jù)時最常見的一個錯誤解決方法,報錯無法在只讀列“ID”中插入數(shù)據(jù)等錯誤,需要的朋友可以參考下2014-08-08SQL Server在AlwaysOn中使用內(nèi)存表的“踩坑”記錄
這篇文章主要給大家介紹了關(guān)于SQL Server在AlwaysOn中使用內(nèi)存表的一些"踩坑"記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)下吧。2017-09-09sql update 觸發(fā)器 可獲得被update的行的信息
sql update 觸發(fā)器 可獲得被update的行的信息,需要的朋友可以參考下。2010-06-06SQL Server遍歷表中記錄的2種方法(使用表變量和游標(biāo))
遍歷表一般都要用到游標(biāo)在SQL Server中可以很容易的用游標(biāo)實現(xiàn)循環(huán)實現(xiàn)遍歷表中記錄,本文將介紹使用表變量和游標(biāo)實現(xiàn)數(shù)據(jù)庫中表的遍歷,感興趣的朋友可以了解下本文,或許可以幫助到你2013-02-02