用SQL语句检查CPU和磁盘空间

 

 

--查看4小时内的CPU变化值,1分钟统计一次

DECLARE @ts_now BIGINT;

SELECT  @ts_now = ms_ticks
FROM    sys.dm_os_sys_info;

--select * from sys.dm_os_sys_info 

SELECT  record_id ,
        DATEADD(ms, CONVERT(BIGINT, -1) * ( @ts_now - [timestamp] ), GETDATE()) AS EventTime ,
        SQLProcessUtilization SQLServer占用CPU使用率 ,
        SystemIdle System的占用CPU使用率 ,
        100 - SystemIdle - SQLProcessUtilization AS 其他进程占用CPU使用率
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;

 

 

 

--查看磁盘空间大小

CREATE TABLE #a
    (
      id INT IDENTITY(1, 1) ,
      DiskName VARCHAR(50)
    );

INSERT  INTO #a
        ( DiskName
        )
        EXEC xp_cmdshell 'wmic LOGICALDISK get name';

CREATE TABLE #b
    (
      id INT IDENTITY(1, 1) ,
      freespace VARCHAR(50)
    );

INSERT  INTO #b
        ( freespace
        )
        EXEC xp_cmdshell 'wmic LOGICALDISK get freespace';

CREATE TABLE #c
    (
      id INT IDENTITY(1, 1) ,
      size VARCHAR(50)
    );

INSERT  INTO #c
        ( size
        )
 EXEC xp_cmdshell 'wmic LOGICALDISK get size';

SELECT  服务器名称 = @@servername ,
        DiskName 磁盘,
        CONVERT(BIGINT, REPLACE(size, CHAR(13), '')) / 1024 / 1024 / 1024 AS 总大小_GB ,
        CONVERT(BIGINT, REPLACE(#b.freespace, CHAR(13), '')) / 1024 / 1024
        / 1024 AS 剩余大小_GB ,
        CONVERT(VARCHAR, CONVERT(DECIMAL(4, 2), ( CONVERT(DECIMAL(15, 2), CONVERT(DECIMAL(15,
                                                              2), REPLACE(#b.freespace,
                                                              CHAR(13), ''))
                                                  / 1024 / 1024 / 1024 * 100)
                                                  / CONVERT(DECIMAL(15, 2), CONVERT(DECIMAL(15,
                                                              2), REPLACE(size,
                                                              CHAR(13), ''))
                                                  / 1024 / 1024 / 1024) )))
        + '%' AS 剩余率
FROM    #a
        JOIN #b ON #a.id = #b.id
        JOIN #c ON #a.id = #c.id
WHERE   #a.id > 1
        AND #b.freespace IS NOT NULL
        AND CHARINDEX(CHAR(13), REPLACE(#b.freespace, ' ', '')) <> 1;
DROP TABLE #a;
DROP TABLE #b;
DROP TABLE #c;

 

转载于:https://www.cnblogs.com/zping/p/3425712.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值