我目前正在使用 ETW 在 SQL Server 2008 上监视(并最终记录)SQL 语句的执行。我要监视的事件是存储过程执行、INSERT、UPDATE、DELETE 和... SELECT 语句。
我可以通过创建具有以下事件的 EVENT SESSION 来监视 SP、INSERT、UPDATE 和 DELETE:
- sqlserver.sp_statement_completed
- sqlserver.sp_statement_starting
- sqlserver.sql_statement_completed
- sqlserver.sql_statement_starting
我还为每个事件添加了一个操作,以将实际的 SQL 语句添加到事件中:sqlserver.sql_text
我的会话基本上看起来像这样:
CREATE EVENT SESSION SomeTestEventSession ON SERVER
ADD EVENT sqlserver.sp_statement_completed (ACTION (sqlserver.sql_text) WHERE sqlserver.database_id > 4),
(...)
我应该在上面添加什么事件来监控我的数据库上的简单SELECT 语句?我知道这会产生很多活动,但是一旦我可以监控语句,我将尝试通过添加一些过滤操作来微调野兽,以减少实际记录的事件数量。
提前致谢!