我想知道以下SQL代码是否会存储在日志中,因此我们可以回头看看将来的日期,以查看用户在查询数据库时键入了什么?
BEGIN TRAN
SELECT *
FROM pictures p
INNER JOIN product pr
ON p.item_id = pr.item_id
ROLLBACK TRAN
我认为,如果将代码包装在rollback子句中,则看不到用户键入内容的记录?
最佳答案
简而言之,不。由于没有发生任何数据更改,因此无需在日志中存储任何内容。实际上,即使是ROLLBACK
版本,COMMIT
也没关系,仍然没有发生任何数据更改,因此也没有日志记录。
记录DELETE
,UPDATE
和INSERT
。 SELECT
不是。如果要记录此类查询,则可以使用跟踪,SQL审核,构建自己的解决方案进行记录或使用第三方产品工具。
以下是有关不同技术的一些信息:
http://solutioncenter.apexsql.com/auditing-select-statements-on-sql-server/
以下是有关SQL审核的更多信息:
http://blogs.msdn.com/b/sreekarm/archive/2009/01/05/auditing-select-statements-in-sql-server-2008.aspx