Sql-Server
SQL Server 2016 審計操作,DatabaseAuditSpecification 能否擷取語句中使用的參數值?
我正在使用
Schema_Object_access_Group
審計操作類型。當我執行選擇、插入、更新 SQL 語句時,它會很好地記錄所有語句。例如,擷取的 Sql 語句如下所示:
UPDATE TOP (200) SomeTable SET ColName1 = @ColName1 WHERE (ColName2 = @ColName2) AND ...
它沒有解釋更新的值和更新的行。
我想擷取更新後的實際值
SET ColName1 = @ColName1
,是否有審計操作類型來完成這項工作。我想要一種方法來擷取任何選擇、更新、插入語句中使用的參數。願意使用審計事件作為更改日誌,在不使用以下內容的情況下跟踪誰更改了什麼:
- 記錄所有更改值的觸發方法
- 變更數據擷取“CDC”
沒有審計操作來擷取此資訊,這是 SQL Server 審計的限制。基本上,它在查詢優化器已經參數化查詢之後擷取語句。
我知道有兩個公開的請求可以改變這種行為(這里和這裡),你可以投票支持,但是,這個限制已經存在了一段時間,而且似乎不太可能改變。請注意,這在 Azure SQL 數據庫中顯然有所不同,但是,我尚未對此進行測試以確認。
您可以選擇觸發器、CDC、SQL Trace 或第三方審計工具。