Fix schedulers query compatibility with pre SQL-2016 (#7144)

This commit is contained in:
Giovanni Luisotto 2020-03-16 20:36:31 +00:00 committed by GitHub
parent 0a75dea70d
commit 20d45d651c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 39 additions and 7 deletions

View File

@ -533,13 +533,45 @@ FROM (
`
//Recommend disabling this by default, but is useful to detect single CPU spikes/bottlenecks
const sqlServerSchedulersV2 string = `SET DEADLOCK_PRIORITY -10;
SELECT 'sqlserver_schedulers' AS [measurement],
REPLACE(@@SERVERNAME,'\',':') AS [sql_instance],
DB_NAME() as [database_name],
cast(scheduler_id as varchar(4)) as scheduler_id, cast(cpu_id as varchar(4)) as cpu_id,is_online,is_idle,preemptive_switches_count,context_switches_count,current_tasks_count,runnable_tasks_count,current_workers_count
, active_workers_count,work_queue_count, pending_disk_io_count,load_factor,yield_count, total_cpu_usage_ms, total_scheduler_delay_ms
from sys.dm_os_schedulers
const sqlServerSchedulersV2 string = `
SET DEADLOCK_PRIORITY - 10;
DECLARE @SqlStatement AS nvarchar(max);
SET @SqlStatement = N'
SELECT
''sqlserver_schedulers'' AS [measurement]
,REPLACE(@@SERVERNAME, ''\'', '':'') AS [sql_instance]
,DB_NAME() AS [database_name]
,cast(s.[scheduler_id] AS VARCHAR(4)) AS [scheduler_id]
,cast(s.[cpu_id] AS VARCHAR(4)) AS [cpu_id]
,s.[is_online]
,s.[is_idle]
,s.[preemptive_switches_count]
,s.[context_switches_count]
,s.[current_tasks_count]
,s.[runnable_tasks_count]
,s.[current_workers_count]
,s.[active_workers_count]
,s.[work_queue_count]
,s.[pending_disk_io_count]
,s.[load_factor]
,s.[yield_count]
'
+
CASE
WHEN CAST(LEFT(CAST(SERVERPROPERTY('ProductVersion') AS nvarchar) ,2) AS int) >= 13
/*Only from SQL Server 2016+ (ver 13.x) [total_cpu_usage_ms] and [total_scheduler_delay_ms]*/
THEN N',s.[total_cpu_usage_ms], s.[total_scheduler_delay_ms]'
ELSE ''
END
+
N'
FROM sys.dm_os_schedulers AS s
'
EXEC sp_executesql @SqlStatement
`
const sqlPerformanceCountersV2 string = `SET DEADLOCK_PRIORITY -10;