国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

使用SQL Server Audit記錄數據庫變更

2024-08-31 00:55:00
字體:
來源:轉載
供稿:網友
使用SQL Server Audit記錄數據庫變更

    最近工作中有一個需求,就是某一個比較重要的業務表經常被莫名其妙的變更。在SQL Server中這類工作如果不事前捕獲記錄的話,無法做到。對于捕獲變更來說,可以考慮的選擇包括Trace,CDC。但Trace的成本比較大,對于負載量較高的系統并不合適,而CDC需要影響業務庫,因此SQL Server Audit就是一個比較好的選擇。

     在SQL Server中,如果只是希望獲得表的更新時間,只需要看表的聚集索引的最后更新時間即可,代碼如下:

SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,* FROM sys.dm_db_index_usage_stats WHERE database_id = DB_ID( 'DateBaseName') AND OBJECT_ID=OBJECT_ID('TableName')

 

    但這種方式并不能看到由某人在某個時間修改了某個表,在此使用Server Audit。Server Audit底層采用的是擴展事件,且存儲結構可以以單獨文件獨立于用戶庫,因此不僅性能較好,也不會對用戶庫產生影響。

    下面是啟用審核的T-SQL代碼:

USE master CREATE SERVER AUDIT audit1 TO FILE (FILEPATH='D:/SQLAudit') USE AdventureWorks2012 CREATE DATABASE AUDIT SPECIFICATION SerialPic FOR SERVER AUDIT audit1 ADD(UPDATE,INSERT,DELETE ON Person.Address by dbo)

 

USE master CREATE SERVER AUDIT audit1 TO FILE (FILEPATH='D:/SQLAudit') USE AdventureWorks2012 CREATE DATABASE AUDIT SPECIFICATION SerialPic FOR SERVER AUDIT audit1 ADD(UPDATE,INSERT,DELETE ON Person.Address by dbo)

 

   上述代碼首先創建服務器級別的審核,并存入D:/SQLAudit中,然后對應創建數據庫級別的審核。在數據庫級別的審核中,跟蹤Person.Address表的Update,Insert,Delete操作。

 

    接下來嘗試修改數據庫Person.Address,在安全-審核下查看審核日志,如圖1所示。

image

圖1.查看審核日志

 

    結果如圖2所示。

image

圖2.數據庫審核記錄

 

    這樣就可以看到誰在什么時間曾經對該表做過哪些修改。當然除了UI方式,也可以通過T-SQL方式查看審核記錄。

SELECT * FROM fn_get_audit_file('D:/SQLAudit/audit1_B8A7821A-D735-446D-B6FA-DF582AB80375_0_130648999540780000.sqlaudit', default, default)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 水富县| 和田县| 东宁县| 石景山区| 视频| 门源| 全椒县| 霍林郭勒市| 绥江县| 榆林市| 荣昌县| 神农架林区| 花垣县| 宝坻区| 玉山县| 太仆寺旗| 屏山县| 岫岩| 怀安县| 丹江口市| 来宾市| 丹棱县| 平塘县| 大埔区| 定州市| 平遥县| 渭南市| 遂川县| 华安县| 平阴县| 赞皇县| 南川市| 万荣县| 汶川县| 高淳县| 察雅县| 宁安市| 蕉岭县| 景宁| 正定县| 屏南县|