<a href="#_labelContents">本文所涉及的内容(Contents)</a>
<a href="#_labelContexts">背景(Contexts)</a>
<a href="#_labelSQLCodes">實作代碼(SQL Codes)</a>
<a href="#_labelAttention">注意事項(Attention)</a>
<a href="#_labelQuestions">疑問(Questions)</a>
<a href="#_labelReferences">參考文獻(References)</a>
DML觸發器一般會運用在業務系統的邏輯處理上,在你對資料庫使用者權限控制不當的時候,這些DML觸發器很可能莫名的被禁用或者删除了,你作為資料庫管理者你想做冤大頭嘛?背黑鍋嘛?如果不想,下面給出4種解決方案:

(Figure1:觸發器的日志)
4. 第四種方案就是這篇文章要講到的新特性:SQL Server Audit,可以使用DATABASE AUDIT SPECIFICATION來捕獲這些事件。
(一) 建立伺服器級别的稽核,注意設定FILEPATH為對應的路徑,顯示設定稽核狀态,建立稽核的時候隻能是伺服器的;
(二) 建立伺服器級别的稽核規範,這裡指定相對應的AUDIT(稽核)接收、儲存跟蹤和記錄的資料,可以同時多個稽核規範指向同一個稽核。
(三) 手動産生對象更改事件
(四) 查詢Audit的記錄,這裡針對稽核ServerAudit的内容進行查詢:
(Figure2:操作記錄)
1. 稽核必須已存在,才能為它建立伺服器稽核規範。 伺服器稽核規範在建立之後處于禁用狀态。
2. CREATE SERVER AUDIT 語句位于事務範圍内。 如果對事務進行復原,也将對該語句進行復原。
3. 經過稽核的事件可以寫入事件日志或稽核檔案。
4. 定義稽核時,将指定結果的輸出位置。 這是稽核的目标位置。 稽核是在禁用狀态下建立的,是以不會自動稽核任何操作。 啟用稽核後,稽核目标将從稽核接收資料,目标可以是檔案、Windows 安全事件日志或 Windows 應用程式事件日志。
5. 通過使用 Windows“事件檢視器”、“日志檔案檢視器”或 fn_get_audit_file 函數來讀取稽核事件。
6. 如果在啟動稽核期間出現問題,則伺服器将不會啟動。 在這種情況下,可以在指令行中使用 –f 選項來啟動伺服器。
1. 如何對*.sqlaudit這些日志進行歸檔或者删除内容呢?
2. 使用sys.fn_get_audit_file擷取到的event_time跟目前的時間不對應,什麼問題?
3. 使用sys.fn_get_audit_file為什麼擷取到的記錄有空的呢?如果說database_name為空到是還好解釋,因為有些操作可能是伺服器級别的,這個字段為空到是說的過去,但是[object_name]和[statement]為什麼沒有内容呢?
(Figure3:空值)
4. 如果我建立表失敗了,為什麼傳回的記錄中還是顯示成功的呢?,執行下面的SQL時傳回了下面的錯誤資訊,但是記錄的succeeded字段顯示為1。
--測試 CREATE TABLE dbo.TestAudit(Id INT) ; GO
消息2714,級别16,狀态6,第2 行
資料庫中已存在名為'TestAudit' 的對象。
(Figure4:建立表失敗)
5. Audit與C2是什麼關系呢?
6. C2禁用的時候不能馬上生效,需要重新開機資料庫服務,這是為什麼呢?
7. 如何修改C2日志檔案的路徑?
解答:要想修改C2日志檔案的路徑,那就先要知道這個預設的路徑在哪裡?在資料庫屬性中設定資料庫的預設位置,開啟C2開關,就能把類似audittrace20130710105730.trc的檔案儲存到下圖設定的路徑當中。
(Figure5:重設C2記錄檔案的儲存路徑)
(Figure6:路徑)
<a href="http://blog.csdn.net/dba_huangzj/article/details/8229578">使用SQLServer Audit來監控觸發器的啟用、禁用情況</a>
<a href="#Restrictions">建立伺服器稽核和伺服器稽核規範</a>
<a href="http://msdn.microsoft.com/zh-cn/library/cc280386.aspx">SQL Server 稽核(資料庫引擎)</a>
<a href="http://msdn.microsoft.com/zh-cn/library/cc280663.aspx">SQL Server 稽核操作組和操作</a>
<a href="http://msdn.microsoft.com/zh-cn/library/cc280448.aspx">CREATE SERVER AUDIT (Transact-SQL)</a>
<a href="http://msdn.microsoft.com/zh-cn/library/hh245121.aspx">SQL 跟蹤</a>
<a href="http://msdn.microsoft.com/en-us/library/cc280386.aspx">SQL Server Audit (Database Engine)</a>