SQL Server中如何获取服务器信息
发布时间:2023-12-22 16:21:22 所属栏目:MsSql教程 来源:DaWei
导读: 这篇文章主要讲解了“SQL Server中怎样获取服务器信息,SQL语句是什么”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所
这篇文章主要讲解了“SQL Server中怎样获取服务器信息,SQL语句是什么”,文中的讲解内容简单、清晰、详细,对大家学习或是工作可能会有一定的帮助,希望大家阅读完这篇文章能有所收获。下面就请大家跟着小编的思路一起来学习一下吧。 在SQL SERVER中如何通过SQL语句获取服务器硬件和系统信息呢?下面介绍一下如何通过SQL语句获取处理器(CPU)、内存(Memory)、磁盘(Disk)以及操作系统相关信息。如有不足和遗漏,敬请补充。谢谢! 一:查看数据库服务器CPU的信息 ---SQL 1:获取数据库服务器的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](100) NULL ,[int_val] [float] NULL ,[c_val] [varchar](128) 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] = 'Platform' ) AS [cpu_category] FROM [sys].[dm_os_sys_info] ) SELECT [number_of_physical_cpus] ,[number_of_cores_per_cpu] ,[total_number_of_cores] ,[number_of_virtual_cpus] ,LTRIM(RIGHT([cpu_category], CHARINDEX('x', [cpu_category]) - 1)) AS [cpu_category] FROM [ProcessorInfo] ---查看虚拟机CPU信息 DECLARE @xp_msver TABLE ( [idx] [int] NULL ,[c_name] [varchar](100) NULL ,[int_val] [float] NULL ,[c_val] [varchar](128) NULL ) INSERT INTO @xp_msver EXEC ('[master]..[xp_msver]');; WITH [ProcessorInfo] AS ( SELECT ([cpu_count] / [hyperthread_ratio]) AS [number_of_physical_cpus] ,[hyperthread_ratio] AS [number_of_cores_per_cpu] ,[cpu_count] AS [total_number_of_cores] ,[cpu_count] AS [number_of_virtual_cpus] ,( SELECT [c_val] FROM @xp_msver WHERE [c_name] = 'Platform' ) AS [cpu_category] FROM [sys].[dm_os_sys_info] ) SELECT [number_of_physical_cpus] ,[number_of_cores_per_cpu] ,[total_number_of_cores] ,[number_of_virtual_cpus] ,LTRIM(RIGHT([cpu_category], CHARINDEX('x', [cpu_category]) - 1)) AS [cpu_category] FROM [ProcessorInfo] 到此这篇关于“SQL Server中怎样获取服务器信息,SQL语句是什么”的文章就介绍到这了,欢迎关注,小编将为大家输出更多高质量的实用文章! (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐