I have been enjoying XE alot recently ( from following SQLSKILLS) so I decided to write something that I used recently – aim: find what process within a specific database that was causing ALTER / CREATE commands, again I am modifying the below for a test concept.
This is what I used:
CREATE EVENT SESSION [XE_tracker] ON SERVER
ADD EVENT sqlserver.object_altered
(
ACTION (sqlserver.database_id)
WHERE (sqlserver.database_id = 5) -- bound to my DB of interest
),
ADD EVENT sqlserver.object_created
(
ACTION (sqlserver.database_id)
WHERE (sqlserver.database_id = 5)
),
ADD EVENT sqlserver.sql_statement_completed(
ACTION (sqlserver.database_id, sqlserver.plan_handle,
sqlserver.session_id, sqlserver.sql_text)
WHERE (sqlserver.database_id = 5)
)
add target package0.asynchronous_file_target -- Store events on disk
(
set filename = N'C:\sqlserver\tracker.xel',
max_file_size = 1024, /* MB */
max_rollover_files = 4
)
go
Then I could deduce what was happening – below showing ALTER command.
