Sql-Server
是否可以查詢託管 SQL Server 2014+ Express 的系統上的總 CPU 負載?
我可以通過查詢視圖來獲取可用記憶體
[master].[sys].[dm_os_sys_memory]
,但是我沒有找到任何類似的東西來獲取有關 CPU 負載的資訊。我只找到有關通過 SQL 伺服器本身查詢 CPU 負載的資訊,這不是我主要關心的,我需要係統上的全部負載。我查看了系統視圖,但我找不到任何東西,或者至少不明白我是否找到了它……
我想通過 T-SQL 得到這個的原因是我們已經有一個監控應用程序,它正在查詢我們所有的系統以獲取其他資訊,並且能夠擴展它而不是設置一些全新的東西會很好。
目前感興趣的系統正在執行 2014 和 2017 express,但它可能很快就會包括 2019/2022 express。
您可以在 Powershell 中創建一個代理作業,該作業每隔 10 秒執行一次並擷取此資訊
CREATE TABLE CounterLog (id varchar(10) PRIMARY KEY, Counter decimal(18,9)); INSERT CounterLog (id) VALUES ('CPU'); EXEC msdb.sys.sp_add_job @job_name = N'Get Counters'; EXEC msdb.sys.sp_add_jobstep @job_name = N'Get Counters', @step_name = N'Get CPU Load', @subsystem = N'PowerShell', @command = N' $load = (Get-Counter "\Processor(_Total)\% Processor Time").CounterSamples[0].CookedValue; Invoke-SqlCmd -ServerInstance "." -Database "YourDb" -Query " UPDATE CounterLog SET Counter = ${$load} WHERE id = ''CPU'';" ', @on_success_action = 3; EXEC msdb.sys.sp_add_jobschedule @job_name = N'Get Counters', @freq_type = 4, @freq_interval = 1, @freq_subday_type = 2, @freq_subday_interval = 10;