是否在日志中存储的回滚语句中选择查询?

Ang*_*ley 5 t-sql sql-server sql-server-2008-r2

我想知道以下SQL代码是否会存储在日志中,所以我们可以回顾一下将来查看数据库时用户输入的内容的日期?

BEGIN TRAN
SELECT * 
FROM pictures p
INNER JOIN product pr
ON p.item_id = pr.item_id
ROLLBACK TRAN
Run Code Online (Sandbox Code Playgroud)

我认为如果代码包含在rollback子句中,那么用户输入的内容的记录是否都不可见?

Sch*_*zIT 1

简而言之,不。由于没有发生数据更改,因此无需在日志中存储任何内容。事实上,这ROLLBACK并不重要,即使它被COMMIT编辑,仍然没有发生数据更改,因此没有日志记录。

DELETEUPDATE并被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