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