|
@@ -0,0 +1,48 @@
|
|
|
+-- Sample script to read data Change Tracking Automatic Cleanup Data using XE "change_tracking_cleanup"
|
|
|
+
|
|
|
+-- Create an XE session to read the
|
|
|
+CREATE EVENT SESSION [ChangeTracking] ON SERVER
|
|
|
+ADD EVENT sqlserver.change_tracking_cleanup
|
|
|
+ADD TARGET package0.ring_buffer
|
|
|
+WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
|
|
|
+GO
|
|
|
+
|
|
|
+-- Start the session
|
|
|
+ALTER EVENT SESSION ChangeTracking
|
|
|
+ON SERVER
|
|
|
+STATE = start
|
|
|
+
|
|
|
+-- Store the XML data in a temporary table
|
|
|
+SELECT CAST(xet.target_data as xml) as XMLDATA
|
|
|
+INTO #SystemHealthSessionData
|
|
|
+FROM sys.dm_xe_session_targets xet
|
|
|
+JOIN sys.dm_xe_sessions xe
|
|
|
+ON (xe.address = xet.event_session_address)
|
|
|
+WHERE xe.name = 'changetracking' -- ### UPDATE with appropriate change tracking session name ###
|
|
|
+and target_name = 'ring_buffer'
|
|
|
+
|
|
|
+-- Get information about the steps executed by the automatic cleanup
|
|
|
+;WITH CTE_HealthSession (EventXML) AS
|
|
|
+(
|
|
|
+ SELECT C.query('.') EventXML
|
|
|
+ FROM #SystemHealthSessionData a
|
|
|
+ CROSS APPLY a.XMLDATA.nodes('/RingBufferTarget/event') as T(C)
|
|
|
+)
|
|
|
+SELECT
|
|
|
+ EventXML.value('(/event/@timestamp)[1]', 'datetime') as [Time (UTC)],
|
|
|
+ DB_NAME(EventXML.value('(/event/data[@name = "database_id"]/value)[1]', 'int')) as [Database Name],
|
|
|
+ OBJECT_NAME(EventXML.value('(/event/data[@name = "object_id"]/value)[1]', 'int')) as [Object Name],
|
|
|
+ EventXML.value('(/event/data[@name = "cleanup_id"]/text)[1]', 'varchar(255)') as [Step],
|
|
|
+ EventXML.value('(/event/data[@name = "value"]/value)[1]', 'varchar(255)') as [Value],
|
|
|
+ CASE EventXML.value('(/event/data[@name = "status"]/value)[1]', 'int')
|
|
|
+ WHEN 1 THEN 'Not Initialized'
|
|
|
+ WHEN 2 THEN 'Initialized'
|
|
|
+ WHEN 8 THEN 'In Progress'
|
|
|
+ WHEN 16 THEN 'Finished'
|
|
|
+ WHEN 32 THEN 'Error'
|
|
|
+ END as [Status]
|
|
|
+FROM CTE_HealthSession
|
|
|
+WHERE EventXML.value('(/event/@name)[1]', 'varchar(255)') = 'change_tracking_cleanup'
|
|
|
+
|
|
|
+-- Drop the temporary table
|
|
|
+DROP TABLE #SystemHealthSessionData
|