Query_Processing_Component.sql 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. SET NOCOUNT ON
  2. -- Fetch data for only SQL Server 2012 instances
  3. IF (SUBSTRING(CAST(SERVERPROPERTY ('ProductVersion') AS varchar(50)),1,CHARINDEX('.',CAST(SERVERPROPERTY ('ProductVersion') AS varchar(50)))-1) >= 11)
  4. BEGIN
  5. -- Get UTC time difference for reporting event times local to server time
  6. DECLARE @UTCDateDiff int = DATEDIFF(mi,GETUTCDATE(),GETDATE());
  7. -- Store XML data retrieved in temp table
  8. SELECT TOP 1 CAST(xet.target_data AS XML) AS XMLDATA
  9. INTO #SystemHealthSessionData
  10. FROM sys.dm_xe_session_targets xet
  11. JOIN sys.dm_xe_sessions xe
  12. ON (xe.address = xet.event_session_address)
  13. WHERE xe.name = 'system_health'
  14. AND xet.target_name = 'ring_buffer';
  15. ;WITH CTE_HealthSession (EventXML) AS
  16. (
  17. SELECT C.query('.') EventXML
  18. FROM #SystemHealthSessionData a
  19. CROSS APPLY a.XMLDATA.nodes('/RingBufferTarget/event') as T(C)
  20. )
  21. SELECT
  22. DATEADD(mi,@UTCDateDiff,EventXML.value('(/event/@timestamp)[1]','datetime')) as [Event Time],
  23. EventXML.value('(/event/data/value/queryProcessing/@maxWorkers)[1]','bigint') as [Max Workers],
  24. EventXML.value('(/event/data/value/queryProcessing/@workersCreated)[1]','bigint') as [Workers Created],
  25. EventXML.value('(/event/data/value/queryProcessing/@workersIdle)[1]','bigint') as [Idle Workers],
  26. EventXML.value('(/event/data/value/queryProcessing/@pendingTasks)[1]','bigint') as [Pending Tasks],
  27. EventXML.value('(/event/data/value/queryProcessing/@hasUnresolvableDeadlockOccurred)[1]','int') as [Unresolvable Deadlock],
  28. EventXML.value('(/event/data/value/queryProcessing/@hasDeadlockedSchedulersOccurred)[1]','int') as [Deadlocked Schedulers]
  29. FROM CTE_HealthSession
  30. WHERE EventXML.value('(/event/@name)[1]', 'varchar(255)') = 'sp_server_diagnostics_component_result'
  31. AND EventXML.value('(/event/data/text)[1]','varchar(255)') = 'QUERY_PROCESSING'
  32. ORDER BY [Event Time];
  33. DROP TABLE #SystemHealthSessionData
  34. END