我有一个由几个类组成的应用程序,用于从文件中导入数据。导入导致多个表被更新/删除/插入。有许多存储过程和触发器被调用来执行此任务。如何在数据库中的表级监控活动?我想要的是一个受导入影响的表的摘要,插入/删除/更新的模式(通过触发器/存储过程/应用程序)。您的解决方案将非常有用。
提前谢谢。
答案 0 :(得分:0)
您可以选择跟踪sql server本身的更改。
你可能想......
等。等等。
但在这种情况下,对你来说最简单的事情可能就是使用几乎没有记录的fn_dblog
。
有点像回顾过去。您可以在最后几分钟,几天,几小时甚至几天内查看系统中发生的每个更改。
SELECT *
FROM fn_dblog(NULL,NULL)
你会得到一个巨大的名单(小心!)。 在此列表中,您可以找到不同的操作类型。其中一些是:
LOP_INSERT_ROWS
- 插入LOP_MODIFY_ROW
- 更新LOP_DELETE_ROWS
- 删除您还可以看到AllocUnitName
。这表示发生这些操作类型的表。
此外,您可以使用Transaction Id
或Transaction Name
过滤所有这些记录。 Transaction Name
将在事务开始时定义(Operation-Type:LOP_BEGIN_XACT
)。过滤它的另一种方法可能是列Begin Time
和End Time
。您还可以在特定Spid
之后进行过滤。但要注意,并非所有列都会在任何地方填充。您可能需要加入这些值,或者只是尝试先获取事务,然后找到所有与这些事务一起更改的行。