Quantcast
Channel: Teguh Triharto Learning Center
Viewing all articles
Browse latest Browse all 413

.::: Script check cpu usage & memory usage & Total Memory Server SQL Server include using sqlcmd to monitoring NMS :::.

$
0
0
 1. create store procedure cpu monitoring sql server for monitoring

CREATE PROCEDURE sp_total_usage_cpu_SQLProcessUtilization

AS
BEGIN
DECLARE @ts_now bigint = (SELECT cpu_ticks/(cpu_ticks/ms_ticks)FROM sys.dm_os_sys_info);

SELECT TOP(1)
               100 - SystemIdle - SQLProcessUtilization + SQLProcessUtilization AS [Total Usage CPU SQL Utilization]
          
FROM (
      SELECT record.value('(./Record/@id)[1]', 'int') AS record_id,
            record.value('(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]', 'int')
            AS [SystemIdle],
            record.value('(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]',
            'int')
            AS [SQLProcessUtilization], [timestamp]
      FROM (
            SELECT [timestamp], CONVERT(xml, record) AS [record]
            FROM sys.dm_os_ring_buffers
            WHERE ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'
            AND record LIKE '%<SystemHealth>%') AS x
      ) AS y
ORDER BY record_id DESC;
END;
GO


2. create store procedure memory monitoring sql server for monitoring

CREATE PROCEDURE sp_total_usage_memory_SQLProcessUtilization

AS
BEGIN
SELECT  CAST((physical_memory_in_use_kb / 1024) AS VARCHAR(10)) as  [Total Usage Memory SQL Utilization mb] FROM sys.dm_os_process_memory

END;
GO


3. exec store procedure

exec sp_total_usage_cpu_SQLProcessUtilization
exec sp_total_usage_memory_SQLProcessUtilization

 

4. for manual checkimg fo cpu usage sql server


DECLARE @ts_now bigint = (SELECT cpu_ticks/(cpu_ticks/ms_ticks)FROM sys.dm_os_sys_info);

SELECT TOP(1) SQLProcessUtilization AS [SQL Server Process CPU Utilization],
               SystemIdle AS [System Idle Process],
               100 - SystemIdle - SQLProcessUtilization AS [Other Process CPU Utilization],
               100 - SystemIdle - SQLProcessUtilization + SQLProcessUtilization AS [Total Usage CPU SQL Utilization],
               DATEADD(ms, -1 * (@ts_now - [timestamp]), GETDATE()) AS [Event Time] , @@SERVERNAME as ServerName,@@servicename as ServiceName
FROM (
      SELECT record.value('(./Record/@id)[1]', 'int') AS record_id,
            record.value('(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]', 'int')
            AS [SystemIdle],
            record.value('(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]',
            'int')
            AS [SQLProcessUtilization], [timestamp]
      FROM (
            SELECT [timestamp], CONVERT(xml, record) AS [record]
            FROM sys.dm_os_ring_buffers
            WHERE ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'
            AND record LIKE '%<SystemHealth>%') AS x
      ) AS y
ORDER BY record_id DESC;

 


5. for manual checking fo memory usage sql server

SELECT @@SERVERNAME as ServerName,@@servicename as ServiceName,cast(physical_memory_in_use_kb / 1024.0 AS NUMERIC(10,2)) as Memory_Usage_MB,
cast(physical_memory_in_use_kb / 1048576.0  AS NUMERIC(10,2)) as Memory_Usage_GB FROM sys.dm_os_process_memory

 

6. checking total memory server from sql server


SELECT @@SERVERNAME as ServerName,@@servicename as ServiceName,
  cast(total_physical_memory_kb / 1024.0 AS NUMERIC(10,2)) AS total_physical_memory_mb,
  cast(available_physical_memory_kb / 1024.0 AS NUMERIC(10,2)) AS available_physical_memory_mb,
  cast(total_page_file_kb / 1024.0 AS NUMERIC(10,2)) AS total_page_file_mb,
  cast(available_page_file_kb / 1024.0 AS NUMERIC(10,2)) AS available_page_file_mb
FROM sys.dm_os_sys_memory
 

 
 7. run from sqlcmd

sqlcmd -E -S mssql -d teguhth -Q "select getdate()as start;exec sp_total_usage_cpu_SQLProcessUtilization;select getdate() as Finish"
sqlcmd -E -S mssql -d teguhth -Q "select getdate()as start;exec sp_total_usage_memory_SQLProcessUtilization;select getdate() as Finish"
 

8. create bat script to special monitoring using remove some character

8.1 create bat script sp_total_usage_cpu_SQLProcessUtilization.bat


@echo off
setlocal enabledelayedexpansion

REM Run sqlcmd command and store output in a temporary file
sqlcmd -E -S mssql -d teguhth -Q "exec sp_total_usage_cpu_SQLProcessUtilization"> temp_output.txt

REM Filter out unwanted lines using findstr
type temp_output.txt | findstr /v /c:"Total Usage CPU SQL Utilization" /c:"-------" /c:"(1 rows affected)"

REM Delete the temporary file
del temp_output.txt

endlocal


8.2 create bat script sp_total_usage_memory_SQLProcessUtilization.bat

@echo off
setlocal enabledelayedexpansion

REM Run sqlcmd command and store output in a temporary file
sqlcmd -E -S mssql -d teguhth -Q "exec sp_total_usage_memory_SQLProcessUtilization"> temp_output.txt

REM Filter out unwanted lines using findstr
type temp_output.txt | findstr /v /c:"Total Usage Memory SQL Utilization mb" /c:"-------" /c:"(1 rows affected)"

REM Delete the temporary file
del temp_output.txt

endlocal
 


9. other it using loop bath script

@echo off
setlocal

rem Set your SQL Server connection details
set "serverName=localhost"
set "username=sa"
set "password=P@ssw0rd"
set "databaseName=teguhth"

rem Set the interval for checking (in seconds)
set "interval=5"

:loop
cls

rem Get CPU and memory usage using Tasklist
tasklist /fi "imagename eq sqlservr.exe" /fo table /v | find "SQL Server"

rem Get CPU usage using SQLCMD
sqlcmd -S %serverName% -U %username% -P %password% -d %databaseName% -Q "exec teguhth..sp_total_usage_cpu_SQLProcessUtilization"

rem Get Memory usage using SQLCMD
sqlcmd -S %serverName% -U %username% -P %password% -d %databaseName% -Q "exec sp_total_usage_memory_SQLProcessUtilization" -h-1 -W -s "|"

rem Wait for the specified interval
timeout /nobreak /t %interval% >nul

goto loop

 
 



Viewing all articles
Browse latest Browse all 413

Trending Articles