使用SQLServerAudit記錄資料庫變更
最近工作中有一個需求就是某一個比較重要的業務表經常被莫名其妙的變更。在SQL Server中這類工作如果不事前捕獲記錄的話無法做到。對於捕獲變更來說可以考慮的選擇包括TraceCDC。但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)
上述程式碼首先建立伺服器級別的稽核並存入DSQLAudit中然後對應建立資料庫級別的稽核。在資料庫級別的稽核中跟蹤Person.Address表的UpdateInsertDelete操作。
接下來嘗試修改資料庫Person.Address在安全-稽核下檢視稽核日誌如圖1所示。
image
圖1.檢視稽核日誌
結果如圖2所示。
image
圖2.資料庫稽核記錄
這樣就可以看到誰在什麼時間曾經對該表做過哪些修改。當然除了UI方式也可以通過T-SQL方式檢視稽核記錄。
SELECT * FROM
fn_get_audit_file(`D:SQLAuditaudit1_B8A7821A-D735-446D-B6FA-DF582AB80375_0_130648999540780000.sqlaudit`, default, default)
分類: SQL Server安全
本文轉自CareySon部落格園部落格原文連結http://www.cnblogs.com/CareySon/p/4204027.html如需轉載請自行聯絡原作者
相關文章
- 幾千萬記錄,資料庫表結構如何平滑變更?資料庫
- LiquiBase 管理資料庫變更實踐UI資料庫
- 資料庫資料跟蹤記錄資料庫
- MAKT 物料組 變更記錄表
- 【AWR】資料庫診斷工具AWR使用全程記錄資料庫
- Android Q 新特性及變更記錄Android
- 【變更】線上庫的變更操作
- 資料庫系列:高併發下的資料欄位變更資料庫
- 記錄資料庫所有ddl操作資料庫
- DBus資料庫表結構變更處理方案資料庫
- 【SQL】Oracle資料庫變更後sql效能對比SQLOracle資料庫
- 變更OS時間對資料庫的影響資料庫
- 資料庫的選定、建立、刪除和變更資料庫
- 資料庫mysql學習筆記記錄資料庫MySql筆記
- Spring Boot 2 實戰:使用 Flyway 管理你資料庫的版本變更Spring Boot資料庫
- 由於目錄變更引起的資料服務無法啟動的問題處理記錄
- 急!請教資料庫記錄改變了如何通知頁面更新?資料庫
- 在SQL Server 2008中使用變更跟蹤獲得資料變更SQLServer
- 使用after create 建立trigger記錄procedure PL/SQL程式碼變更SQL
- RAC資料庫一節點更換HBA卡導致emc儲存裝置序號變動處理記錄資料庫
- 為VNPY增加資料庫記錄交易資料功能資料庫
- 調整資料庫的資料檔案記錄資料庫
- 資料庫變更之後Event Sourcing怎樣重放?資料庫
- cmdb 查詢資料庫操作記錄資料庫
- SQL Server 資料庫基本記錄(一)SQLServer資料庫
- SQL Server 資料庫基本記錄(二)SQLServer資料庫
- SQL Server 資料庫基本記錄(三)SQLServer資料庫
- 記錄我的資料庫學習資料庫
- 向量資料庫Chroma學習記錄資料庫
- 亞馬遜雲科技:對Amazon Aurora進行資料庫變更管理亞馬遜資料庫
- 用觸發器記錄資料庫使用者登陸資訊觸發器資料庫
- 【AUDIT】審計並記錄使用者連線資料庫資訊資料庫
- thinkphp6多資料庫配置記錄PHP資料庫
- 常見資料庫最佳化記錄資料庫
- SQL 記錄資料庫連線數資訊SQL資料庫
- Oracle遷移資料庫過程記錄Oracle資料庫
- 向量資料庫之Lancedb學習記錄資料庫
- 【手工建庫】手工方式建立 ORACLE資料庫全程記錄Oracle資料庫