Skrypt dzięki uprzejmości Igora Yaremenko 🙂
-- create event session CREATE EVENT SESSION [Database_Growth_Watchdog] ON SERVER ADD EVENT sqlserver.database_file_size_change ( ACTION ( sqlserver.client_app_name , sqlserver.client_hostname , sqlserver.database_name , sqlserver.session_nt_username , sqlserver.sql_text , sqlserver.username ) WHERE ( [database_id] = ( 2 ))) ADD TARGET package0.event_file ( SET filename = N'D:\Temp\Database_Growth_Wathdog.xel', max_file_size = ( 10 )) WITH ( MAX_MEMORY = 4096KB , EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS , MAX_DISPATCH_LATENCY = 1 SECONDS , MAX_EVENT_SIZE = 0KB , MEMORY_PARTITION_MODE = NONE , TRACK_CAUSALITY = OFF , STARTUP_STATE = ON ); GO -- parsing event session log DECLARE @TraceFileLocation NVARCHAR(255) = N'D:\Temp\Database_Growth_Wathdog*.xel'; WITH FileSizeChangedEvent AS ( SELECT object_name Event , CONVERT(XML, event_data) Data FROM sys.fn_xe_file_target_read_file(@TraceFileLocation, NULL, NULL, NULL) ) , FileSizeChangedEventParsed AS ( SELECT Data.value('(/event/@timestamp)[1]', 'DATETIME') EventTime , Data.query('/event/action[@name=''client_hostname'']/value').value('.', 'VARCHAR(MAX)') ClientHostname , Data.query('/event/action[@name=''username'']/value').value('.', 'VARCHAR(MAX)') ClientUsername , Data.query('/event/action[@name=''client_app_name'']/value').value('.', 'VARCHAR(MAX)') ClientAppName , Data.query('/event/action[@name=''database_name'']/value').value('.', 'VARCHAR(MAX)') ClientAppDBName , Data.query('/event/data[@name=''database_id'']/value').value('.', 'INT') SystemDatabaseId , Data.query('/event/data[@name=''file_name'']/value').value('.', 'VARCHAR(MAX)') SystemDatabaseFileName , Data.query('/event/data[@name=''file_type'']/text').value('.', 'VARCHAR(MAX)') SystemDatabaseFileType , Data.query('/event/data[@name=''is_automatic'']/text').value('.', 'VARCHAR(MAX)') SystemIsAutomaticGrowth , Data.query('/event/data[@name=''size_change_kb'']/value').value('.', 'BIGINT') GrowthInKB , Data.query('/event/data[@name=''total_size_kb'']/value').value('.', 'BIGINT') TotalSizeInKB , Data.query('/event/data[@name=''duration'']/value').value('.', 'BIGINT') SystemDuration , Data.query('/event/action[@name=''sql_text'']/value').value('.', 'VARCHAR(MAX)') SQLCommandText FROM FileSizeChangedEvent ) SELECT * FROM FileSizeChangedEventParsed;