對于某些重要的數(shù)據(jù)表來說,如果經(jīng)常出現(xiàn)可疑的數(shù)據(jù)變更行為,就應(yīng)該引起管理員的注意。但若事先不捕獲記錄的話,是無法對其進行追蹤查看的。使用捕獲記錄的方式對負載量大的系統(tǒng)是不適合的,而且管理員無法查看什么用戶在什么時間修改了什么數(shù)據(jù)表等信息。使用SQL審核功能可以跟蹤和記錄系統(tǒng)上發(fā)生的事件,可以跟蹤服務(wù)器級別和數(shù)據(jù)庫級別的數(shù)據(jù)更改,其本身是一個數(shù)據(jù)庫對象,可以通過T-SQL語句進行管理。SQL審核功能可以將記錄寫到到單獨的文件或?qū)懭胂到y(tǒng)日志中,即通過審核數(shù)據(jù)庫引擎實例中發(fā)生的事件將數(shù)據(jù)輸出到日志文件中??梢酝ㄟ^文件,事件查看器,相關(guān)函數(shù)等方式,來讀取審核的事件內(nèi)容。
這里還以“Clientzl”數(shù)據(jù)庫為例,需要對其中的內(nèi)容變化進行審核。首先執(zhí)行“USE master”,“CREATE SERVER AUDIT shenhe1 TO FILE (FILEPATH='D:SQLAudit')”語句,創(chuàng)建服務(wù)器級別的審核,并將審核的內(nèi)容輸出到指定的目錄中。執(zhí)行“USE Clientzl”,“CREATE DATABASE AUDIT SPECIFICATION Daspec2016 FOR SERVER AUDIT shenhe1 ADD(UPDATE,INSERT,DELETE ON scx.lianxrdz by dbo)”語句,創(chuàng)建針對數(shù)據(jù)庫“Clientzl”的審核,并對其中的“Address”表的更新,插入,刪除行為進行審核,其中的“scx”為架構(gòu)名。
在Microsoft SQL S e r v e r M a n a g e m e n t Studios窗口左側(cè)選擇數(shù)據(jù)庫實例名,在其下依次選擇“安全性”、“審核”項,顯示上述創(chuàng)建額審核項目,在其右鍵菜單上點擊“啟用審核”項啟用該審核項目。注意,還需在“Clientzl”數(shù)據(jù)庫中打開“安全性”、“數(shù)據(jù)庫審核規(guī)則”項,在其下選擇名為“Daspec2016”規(guī)范項目,在其右鍵菜單上點擊“啟用數(shù)據(jù)庫審核規(guī)范”項才可以讓審核發(fā)揮作用。之后可以對該數(shù)據(jù)表進行修改,例如執(zhí)行“update scx.lianxrdz set dizhi='new dizhi'where lxrID=9”語 句,對該數(shù)據(jù)表中的的“dizhi”字段的內(nèi)容進行更改。在“shenhe1”的審核項目右擊“查看審核日志”項可以查看詳細的日志信息,包括目標數(shù)據(jù)庫主體名稱,數(shù)據(jù)庫名稱,操作類型,記錄的時間,架構(gòu)名稱等等。這樣管理員可以非常清晰的看到數(shù)據(jù)表數(shù)據(jù)變動的詳細信息。當然,也可以執(zhí)行“SELECT * FROM fn_get_audit_file('d:sqlAudit*',default,de fault)”之類的語句,來查看審核的信息。