我想知道以下SQL代码是否会存储在日志中,因此我们可以回头看看将来的日期,以查看用户在查询数据库时键入了什么?

BEGIN TRAN
SELECT *
FROM pictures p
INNER JOIN product pr
ON p.item_id = pr.item_id
ROLLBACK TRAN

我认为,如果将代码包装在rollback子句中,则看不到用户键入内容的记录?

最佳答案

简而言之,不。由于没有发生任何数据更改,因此无需在日志中存储任何内容。实际上,即使是ROLLBACK版本,COMMIT也没关系,仍然没有发生任何数据更改,因此也没有日志记录。

记录DELETEUPDATEINSERTSELECT不是。如果要记录此类查询,则可以使用跟踪,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

10-07 19:44
查看更多