SQL SERVER如何通过SQL语句获服务器硬件和系统信息

在SQL SERVER中如何通过SQL语句获取服务器硬件和系统信息呢?下面介绍一下如何通过SQL语句获取处理器(CPU)、内存(Memory)、磁盘(Disk)以及操作系统相关信息。如有不足和遗漏,敬请补充。谢谢!

一:查看数据库服务器CPU的信息

---SQL 获取数据库服务器的CPU型号

EXEC xp_instance_regread 

    'HKEY_LOCAL_MACHINE',

    'HARDWARE\DESCRIPTION\System\CentralProcessor\0',

    'ProcessorNameString';
---SQL 2:获取数据库服务器CPU核数等信息(只适用于SQL 2005以及以上版本数据库)

/*************************************************************************************

--cpu_count                :指定系统中的逻辑 CPU 数

--hyperthread_ratio        :指定一个物理处理器包公开的逻辑内核数与物理内核数的比.虚拟机

--                         中可以表示每个虚拟插槽的核数。虚拟中[Physical CPU Count]其实

--                         表示虚拟插槽数

*************************************************************************************/

SELECT s.cpu_count                        AS [Loggic CPU Count]
      ,s.hyperthread_ratio                AS [Hyperthread Ratio]
      ,s.cpu_count/s.hyperthread_ratio  AS [Physical CPU Count] 
FROM sys.dm_os_sys_info s OPTION (RECOMPILE);
---SQL 3:获取数据库服务器CPU核数(适用于所有版本)
CREATE TABLE #TempTable
    (
      [Index] VARCHAR(2000) ,
      [Name] VARCHAR(2000) ,
      [Internal_Value] VARCHAR(2000) ,
      [Character_Value] VARCHAR(2000)
    );

INSERT  INTO #TempTable
        EXEC xp_msver;

SELECT  Internal_Value AS VirtualCPUCount
FROM    #TempTable
WHERE   Name = 'ProcessorCount';
DROP TABLE #TempTable;
GO
---SQL 4:在老外博客中看到一个计算CPU相关信息的SQL,不过虚拟机计算有点小问题,我修改了一下。

DECLARE @xp_msver TABLE (
    [idx] [int] NULL
    ,[c_name] [varchar](0) NULL
    ,[int_val] [float] NULL
    ,[c_val] [varchar](8) NULL
    )

INSERT INTO @xp_msver

EXEC ('[master]..[xp_msver]');;

WITH [ProcessorInfo]

AS (

    SELECT ([cpu_count] / [hyperthread_ratio]) AS [number_of_physical_cpus]
        ,CASE 
            WHEN hyperthread_ratio = cpu_count
                THEN cpu_count
            ELSE (([cpu_count] - [hyperthread_ratio]) / ([cpu_count] / [hyperthread_ratio]))
            END AS [number_of_cores_per_cpu]
        ,CASE 
            WHEN hyperthread_ratio = cpu_count
                THEN cpu_count
            ELSE ([cpu_count] / [hyperthread_ratio]) * (([cpu_count] - [hyperthread_ratio]) / ([cpu_count] / [hyperthread_ratio]))
            END AS [total_number_of_cores]
        ,[cpu_count] AS [number_of_virtual_cpus]

        ,(
            SELECT [c_val]
            FROM @xp_msver
            WHERE [c_name] = <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值