我想知道下面的SQL代碼是否會存儲在日誌中,所以我們可以回頭看看未來的日期,以查看用戶在查詢數據庫時鍵入了什麼?是否選擇在日誌中存儲的回滾語句中的查詢?
BEGIN TRAN
SELECT *
FROM pictures p
INNER JOIN product pr
ON p.item_id = pr.item_id
ROLLBACK TRAN
我認爲如果代碼被包裝在一個回滾子句中,用戶輸入的內容沒有記錄可見?
我想知道下面的SQL代碼是否會存儲在日誌中,所以我們可以回頭看看未來的日期,以查看用戶在查詢數據庫時鍵入了什麼?是否選擇在日誌中存儲的回滾語句中的查詢?
BEGIN TRAN
SELECT *
FROM pictures p
INNER JOIN product pr
ON p.item_id = pr.item_id
ROLLBACK TRAN
我認爲如果代碼被包裝在一個回滾子句中,用戶輸入的內容沒有記錄可見?
總之,沒有。由於沒有發生數據更改,因此不需要在日誌中存儲任何內容。實際上,ROLLBACK
並不重要,即使它會是COMMIT
ed,仍然沒有發生數據更改,因此也沒有記錄。
DELETE
,UPDATE
和INSERT
被記錄。 SELECT
不是。如果您想記錄這些查詢,您可以使用跟蹤,使用SQL Audit,構建您自己的解決方案以登錄或使用第三方產品工具。
這裏有不同的技術的一些信息:
http://solutioncenter.apexsql.com/auditing-select-statements-on-sql-server/
下面是對SQL審計的詳細信息:
十分密切的關係:是臨時存儲只讀查詢在SQL Server事務日誌?](http://stackoverflow.com/questions/5516358/are-ad-hoc-read-only-queries-stored-in-sql-server-transaction-log)。在事務中放置一個SELECT語句仍然不會將它提升到日誌。 – 2015-02-24 09:09:47