Sql-Server

SQL Server 2016 審計操作,DatabaseAuditSpecification 能否擷取語句中使用的參數值?

  • May 8, 2020

我正在使用Schema_Object_access_Group審計操作類型。當我執行選擇、插入、更新 SQL 語句時,它會很好地記錄所有語句。

例如,擷取的 Sql 語句如下所示:

UPDATE TOP (200) SomeTable 
SET ColName1 = @ColName1
WHERE (ColName2 = @ColName2) AND ...

它沒有解釋更新的值和更新的行。

我想擷取更新後的實際值SET ColName1 = @ColName1,是否有審計操作類型來完成這項工作。我想要一種方法來擷取任何選擇、更新、插入語句中使用的參數。

願意使用審計事件作為更改日誌,在不使用以下內容的情況下跟踪誰更改了什麼:

  1. 記錄所有更改值的觸發方法
  2. 變更數據擷取“CDC”

沒有審計操作來擷取此資訊,這是 SQL Server 審計的限制。基本上,它在查詢優化器已經參數化查詢之後擷取語句。

我知道有兩個公開的請求可以改變這種行為(這里這裡),你可以投票支持,但是,這個限制已經存在了一段時間,而且似乎不太可能改變。請注意,這在 Azure SQL 數據庫中顯然有所不同,但是,我尚未對此進行測試以確認。

您可以選擇觸發器、CDC、SQL Trace 或第三方審計工具。

引用自:https://dba.stackexchange.com/questions/266710