forked from ktaranov/sqlserver-kit
-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathRing_Bufer_Analyze.sql
36 lines (35 loc) · 2.35 KB
/
Ring_Bufer_Analyze.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
Author: Dmitriy Ivanov
Original link: https://t.me/sqlcom
*/
WITH RingBufferXML
AS(SELECT CAST(Record AS XML) AS RBR FROM sys .dm_os_ring_buffers
WHERE ring_buffer_type = 'RING_BUFFER_RESOURCE_MONITOR'
)
SELECT DISTINCT 'Problems' =
CASE
WHEN XMLRecord.value('(ResourceMonitor/IndicatorsProcess)[1]','tinyint') = 0 AND
XMLRecord.value('(ResourceMonitor/IndicatorsSystem)[1]','tinyint') = 2
THEN 'Insufficient physical memory for the system'
WHEN XMLRecord.value('(ResourceMonitor/IndicatorsProcess)[1]','tinyint') = 0 AND
XMLRecord.value('(ResourceMonitor/IndicatorsSystem)[1]','tinyint') = 4
THEN 'Insufficient virtual memory for the system'
WHEN XMLRecord.value('(ResourceMonitor/IndicatorsProcess)[1]', 'tinyint') = 2 AND
XMLRecord.value('(ResourceMonitor/IndicatorsSystem)[1]','tinyint') = 0
THEN'Insufficient physical memory for queries'
WHEN XMLRecord.value('(ResourceMonitor/IndicatorsProcess)[1]', 'tinyint') = 4 AND
XMLRecord.value('(ResourceMonitor/IndicatorsSystem)[1]', 'tinyint') = 4
THEN 'Insufficient virtual memory for queries and system'
WHEN XMLRecord.value('(ResourceMonitor/IndicatorsProcess)[1]','tinyint') = 2 AND
XMLRecord.value('(ResourceMonitor/IndicatorsSystem)[1]','tinyint') = 4
THEN 'Insufficient virtual memory for the system and physical for queries'
WHEN XMLRecord.value('(ResourceMonitor/IndicatorsProcess)[1]', 'tinyint') = 2 AND
XMLRecord.value('(ResourceMonitor/IndicatorsSystem)[1]', 'tinyint') = 2
THEN 'There is not enough physical memory for the system and requests'
END
FROM RingBufferXML
CROSS APPLY RingBufferXML.RBR.nodes ('Record') Record (XMLRecord)
WHERE XMLRecord.value('(ResourceMonitor/IndicatorsProcess)[1]','tinyint') IN (0,2,4) AND
XMLRecord.value('(ResourceMonitor/IndicatorsSystem)[1]' ,'tinyint') IN (0,2,4) AND
XMLRecord.value('(ResourceMonitor/IndicatorsProcess)[1]','tinyint') +
XMLRecord.value('(ResourceMonitor/IndicatorsSystem)[1]' ,'tinyint') > 0;