天天看點

SQL Server Audit監控觸發器狀态一.本文所涉及的内容(Contents)二.背景(Contexts)三.實作代碼(SQL Codes)四.注意事項(Attention)五.疑問(Questions)六.參考文獻(References)

<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種解決方案:

SQL Server Audit監控觸發器狀态一.本文所涉及的内容(Contents)二.背景(Contexts)三.實作代碼(SQL Codes)四.注意事項(Attention)五.疑問(Questions)六.參考文獻(References)

(Figure1:觸發器的日志)

4. 第四種方案就是這篇文章要講到的新特性:SQL Server Audit,可以使用DATABASE AUDIT SPECIFICATION來捕獲這些事件。

(一) 建立伺服器級别的稽核,注意設定FILEPATH為對應的路徑,顯示設定稽核狀态,建立稽核的時候隻能是伺服器的;

(二) 建立伺服器級别的稽核規範,這裡指定相對應的AUDIT(稽核)接收、儲存跟蹤和記錄的資料,可以同時多個稽核規範指向同一個稽核。

(三) 手動産生對象更改事件

(四) 查詢Audit的記錄,這裡針對稽核ServerAudit的内容進行查詢:

SQL Server Audit監控觸發器狀态一.本文所涉及的内容(Contents)二.背景(Contexts)三.實作代碼(SQL Codes)四.注意事項(Attention)五.疑問(Questions)六.參考文獻(References)

(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]為什麼沒有内容呢?

SQL Server Audit監控觸發器狀态一.本文所涉及的内容(Contents)二.背景(Contexts)三.實作代碼(SQL Codes)四.注意事項(Attention)五.疑問(Questions)六.參考文獻(References)

(Figure3:空值)

4. 如果我建立表失敗了,為什麼傳回的記錄中還是顯示成功的呢?,執行下面的SQL時傳回了下面的錯誤資訊,但是記錄的succeeded字段顯示為1。

--測試 CREATE TABLE dbo.TestAudit(Id INT) ; GO

消息2714,級别16,狀态6,第2 行

資料庫中已存在名為'TestAudit' 的對象。

SQL Server Audit監控觸發器狀态一.本文所涉及的内容(Contents)二.背景(Contexts)三.實作代碼(SQL Codes)四.注意事項(Attention)五.疑問(Questions)六.參考文獻(References)

(Figure4:建立表失敗)

5. Audit與C2是什麼關系呢?

6. C2禁用的時候不能馬上生效,需要重新開機資料庫服務,這是為什麼呢?

7. 如何修改C2日志檔案的路徑?

解答:要想修改C2日志檔案的路徑,那就先要知道這個預設的路徑在哪裡?在資料庫屬性中設定資料庫的預設位置,開啟C2開關,就能把類似audittrace20130710105730.trc的檔案儲存到下圖設定的路徑當中。

SQL Server Audit監控觸發器狀态一.本文所涉及的内容(Contents)二.背景(Contexts)三.實作代碼(SQL Codes)四.注意事項(Attention)五.疑問(Questions)六.參考文獻(References)

(Figure5:重設C2記錄檔案的儲存路徑)

SQL Server Audit監控觸發器狀态一.本文所涉及的内容(Contents)二.背景(Contexts)三.實作代碼(SQL Codes)四.注意事項(Attention)五.疑問(Questions)六.參考文獻(References)

(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>