我打算跟踪在恢复模型简单的SQL Server数据库上执行的删除操作。
当数据库处于此模式时,是否会记录此类操作?
答案 0 :(得分:2)
您可以通过多种方式实现目标。如果你想要,你可以从sql server事务日志中读取删除操作,但是你将"松散"如果您处于完全恢复模型,则在每个事务日志备份之后。在简单恢复模型中,您无法控制事务日志内容。
要查找特定表的删除操作,可以使用以下查询:
DECLARE @MonitoredTable sysname
SET @MonitoredTable = 'YouTable'
SELECT
u.[name] AS UserName
, l.[Begin Time] AS TransactionStartTime
FROM
fn_dblog(NULL, NULL) l
INNER JOIN
(
SELECT
[Transaction ID]
FROM
fn_dblog(NULL, NULL)
WHERE
AllocUnitName LIKE @MonitoredTable + '%'
AND
Operation = 'LOP_DELETE_ROWS'
) deletes
ON deletes.[Transaction ID] = l.[Transaction ID]
INNER JOIN
sysusers u
ON u.[sid] = l.[Transaction SID]
您可以使用的另一种方法是编写"审核触发器"或者您可以直接使用sql server审核功能/ Sql server扩展事件以及此Apex网页中的说明: