DDL Trigger 可以用來追蹤與監控資料庫結構的變化,EX:紀錄誰何時對 Table schema 進行變化、新增登入者等,DDL 事件會觸發 DDL Trigger,DDL 事件則是指 CREATE、ALTER、DROP、GRANT、DENY、REVOKE 或 UPDATE STATISTICS 關鍵字開頭的 T-SQL 語法。
語法
CREATE TRIGGER trigger_name -- DDL Trigger 名稱
ON { ALL SERVER | DATABASE } -- 指定伺服器或資料庫層級
[ WITH
ENCRYPTION , -- 是否加密
EXECUTE AS User -- 使用某 User 的權限來執行 DDL Trigger
]
FOR { event_type | event_group }-- 指定觸發的 DDL 事件或 DDL 群組事件
AS
BEGIN
-- 執行的 T-SQL 語法
END
EVENTDATA()函數
DDL Trigger 執行時,使用 EVENTDATA() 擷取 DDL 相關資訊,回傳值為 XML,可以利用 XQuery 來解析其內容,內容可以儲存在 Table 中供後續分析追蹤或利用 DataBase Mail 發信通知相關人員。
- LoginName:登入 SQL Server 來執行 DDL 語法的帳號
- ObjectName:對哪個帳號進行加入、修改或刪除動,以上述圖型為例,是要新增 DDLTest 帳號