婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > SqlServer如何通過SQL語句獲取處理器(CPU)、內存(Memory)、磁盤(Disk)以及操作系統相關信息

SqlServer如何通過SQL語句獲取處理器(CPU)、內存(Memory)、磁盤(Disk)以及操作系統相關信息

熱門標簽:濮陽清豐400開頭的電話申請 臺灣外呼系統軟件 南通智能外呼系統怎么樣 地圖標注可以編輯地名嗎 樂昌電話機器人 地圖標注跑線下市場 南京怎么申請400這種電話 真3地圖標注 疫情時期電話機器人

在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語句獲取服務器的物理內存大小?內存條型號?虛擬內存大小?內存使用情況? 目前我所知道的只能通過SQL語句獲取服務器物理內存大小,內存的使用情況。 至于內存條型號,系統虛擬內存大小,暫時好像還無法通過SQL語句獲取。

查看服務器的物理內存情況

    如下所示,從sys.dm_os_sys_info里面獲取的physical_memory_in_bytes 或physical_memory_kb 的值總是低于實際物理內存。暫時不清楚具體原因(還未查到相關資料),所以計算大小有出入,要獲取實際的物理內存,就必須借助CEILING函數。

 

--SQL 1:獲取數據庫服務器物理內存數(適用于所有版本)

 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/1024 AS PhysicalMemory
FROM  #TempTable
WHERE  Name = 'PhysicalMemory';
DROP TABLE #TempTable;
GO

---SQL 2:適用于SQL Server 2005、SQL Server 2008

 SELECT CEILING(physical_memory_in_bytes*1.0/1024/1024/1024)  AS [Physical Memory Size]
FROM sys.dm_os_sys_info OPTION (RECOMPILE) 
SELECT physical_memory_in_bytes*1.0/1024/1024/1024
  ,  physical_memory_in_bytes AS [Physical Memory Size]
FROM sys.dm_os_sys_info OPTION (RECOMPILE)

---SQL 3:適用于SQL Server 2012 到 SQL Server 2014

 SELECT CEILING(physical_memory_kb*1.0/1024/1024) AS [Physical Memory Size]
FROM sys.dm_os_sys_info OPTION (RECOMPILE);

---SQL 4:適用于SQL Server 2008以及以上的版本:查看物理內存大小,已經使用的物理內存以及還剩下的物理內存。

SELECT CEILING(total_physical_memory_kb * 1.0 / 1024 / 1024)  AS [Physical Memory Size] 
    ,CAST(available_physical_memory_kb * 1.0 / 1024 / 1024 
                       AS DECIMAL(8, 4)) AS [Unused Physical Memory]
    ,CAST(( total_physical_memory_kb - available_physical_memory_kb ) * 1.0
    / 1024 / 1024 AS DECIMAL(8, 4))              AS [Used Physical Memory]
    ,CAST(system_cache_kb*1.0 / 1024/1024 AS DECIMAL(8, 4)) AS [System Cache Size]
FROM  sys.dm_os_sys_memory

三:查看數據庫服務器硬盤的信息

如下所示,我們可以通過下面腳本獲取服務器的各個磁盤的使用情況。但是無法獲取磁盤的型號、轉速之類的信息。

SET NOCOUNT ON 
DECLARE @Result   INT;
DECLARE @objectInfo   INT;
DECLARE @DriveInfo   CHAR(1);
DECLARE @TotalSize   VARCHAR(20);
DECLARE @OutDrive   INT;
DECLARE @UnitMB   BIGINT;
DECLARE @FreeRat   FLOAT;
SET @UnitMB = 1048576;
--創建臨時表保存服務器磁盤容量信息
CREATE TABLE #DiskCapacity
(
[DiskCD]   CHAR(1) ,
FreeSize   INT   ,
TotalSize   INT  
);
INSERT #DiskCapacity([DiskCD], FreeSize ) 
EXEC master.dbo.xp_fixeddrives;
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE WITH OVERRIDE;
EXEC @Result = master.sys.sp_OACreate 'Scripting.FileSystemObject',@objectInfo OUT;
DECLARE CR_DiskInfo CURSOR LOCAL FAST_FORWARD
FOR 
SELECT DiskCD FROM #DiskCapacity
ORDER by DiskCD
OPEN CR_DiskInfo;
FETCH NEXT FROM CR_DiskInfo INTO @DriveInfo
WHILE @@FETCH_STATUS=0
BEGIN
EXEC @Result = sp_OAMethod @objectInfo,'GetDrive', @OutDrive OUT, @DriveInfo
EXEC @Result = sp_OAGetProperty @OutDrive,'TotalSize', @TotalSize OUT
UPDATE #DiskCapacity
SET TotalSize=@TotalSize/@UnitMB
WHERE DiskCD=@DriveInfo
FETCH NEXT FROM CR_DiskInfo INTO @DriveInfo
END
CLOSE CR_DiskInfo
DEALLOCATE CR_DiskInfo;
EXEC @Result=sp_OADestroy @objectInfo
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 0;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'show advanced options', 0
RECONFIGURE WITH OVERRIDE;
SELECT DiskCD   AS [Drive CD]   , 
  STR(TotalSize*1.0/1024,6,2)   AS [Total Size(GB)] ,
  STR((TotalSize - FreeSize)*1.0/1024,6,2)   AS [Used Space(GB)] ,
  STR(FreeSize*1.0/1024,6,2)   AS [Free Space(GB)] ,
  STR(( TotalSize - FreeSize)*1.0/(TotalSize)* 100.0,6,2) AS [Used Rate(%)]  ,
  STR(( FreeSize * 1.0/ ( TotalSize ) ) * 100.0,6,2)    AS [Free Rate(%)]
FROM #DiskCapacity;
DROP TABLE #DiskCapacity;

四:查看操作系統信息

  通過下面SQL語句,我們可以查看操作系統版本、補丁、語言等信息

--創建臨時表保存語言版本信息
CREATE TABLE #Language
(
[LanguageDtl]      NVARCHAR(64) ,
[os_language_version]  INT
);
INSERT INTO #Language
SELECT 'English - United States'       ,1033 UNION ALL
SELECT 'English - United Kingdom'       ,2057 UNION ALL
SELECT 'Chinese - People''s Republic of China',2052 UNION ALL
SELECT 'Chinese - Singapore'         ,4100 UNION ALL
SELECT 'Chinese - Taiwan'           ,1028 UNION ALL
SELECT 'Chinese - Hong Kong SAR'       ,3076 UNION ALL
SELECT 'Chinese - Macao SAR'         ,5124;
WITH SystemVersion(SystemInfo,ReleaseNo)
AS
(
SELECT 'Windows 10' ,
    '10.0*'
UNION ALL
SELECT 'Windows Server 2016 Technical Preview' ,
    '10.0*'
UNION ALL
SELECT 'Windows 8.1' ,
    '6.3*'
UNION ALL
SELECT 'Windows Server 2012 R2' ,
    '6.3'
UNION ALL
SELECT 'Windows 8' ,
    '6.2'
UNION ALL
SELECT 'Windows Server 2012' ,
    '6.2'
UNION ALL
SELECT 'Windows 7' ,
    '6.1'
UNION ALL
SELECT 'Windows Server 2008 R2' ,
    '6.1'
UNION ALL
SELECT 'Windows Server 2008' ,
    '6.0'
UNION ALL
SELECT 'Windows Vista' ,
    '6.0'
UNION ALL
SELECT 'Windows Server 2003 R2' ,
    '5.2'
UNION ALL
SELECT 'Windows Server 2003' ,
    '5.2'
UNION ALL
SELECT 'Windows XP 64-Bit Edition' ,
    '5.2'
UNION ALL
SELECT 'Windows XP' ,
    '5.1'
UNION ALL
SELECT 'Windows 2000' ,
    '5.0'
)    
SELECT s.SystemInfo 
   ,w.windows_service_pack_level
   ,l.LanguageDtl
FROM sys.dm_os_windows_info w
INNER JOIN SystemVersion s ON w.windows_release=s.ReleaseNo
INNER JOIN #Language l ON l.os_language_version = w.os_language_version;
DROP TABLE #Language;

注意:

  1:如上所示,臨時表#Language的數據此處只列了幾條常用的數據,如需全部數據,參考https://msdn.microsoft.com/zh-CN/goglobal/bb964664.aspx自行補充。

  2:操作系統的版本信息的數據來源于https://msdn.microsoft.com/zh-CN/library/ms724832(VS.85).aspx

有可能出現不同操作系統具有相同Version number值,例如Windows 7 和Windows Server 2008 R2的Version numberd都為6.1。導致下面查詢結果出現多條記錄(如下所示)。一般要酌情判斷(如果生產服務器都為Windows服務器,可以剔除Windows XP、Windows 7這類數據)。

ps:使用SQL語句獲得服務器名稱和IP地址

使用SQL語句獲得服務器名稱和IP地址   獲取服務器名稱: 

SELECT SERVERPROPERTY('MachineName')
select @@SERVERNAME
select HOST_NAME()

獲取IP地址可以使用xp_cmdshell執行ipconfig命令:

--開啟xp_cmdshell 
exec sp_configure'show advanced options', 1 
reconfigure with override 
exec sp_configure'xp_cmdshell', 1 
reconfigure with override 
exec sp_configure'show advanced options', 0 
reconfigure with override 
go 
begin 
declare @ipline varchar(200) 
declare @pos int 
declare @ip varchar(40) 
set nocount on 
set @ip = null 
  if object_id('tempdb..#temp') is not null drop table #temp 
  create table #temp(ipline varchar(200)) 
  insert #temp exec master..xp_cmdshell'ipconfig' 
  select @ipline = ipline 
  from #temp 
  where upper(ipline) like '%IPv4 地址%'--這里需要注意一下,系統不同這里的匹配值就不同 
  if @ipline is not null 
  begin 
    set @pos = charindex(':',@ipline,1); 
    set @ip = rtrim(ltrim(substring(@ipline , 
    @pos + 1 , 
    len(@ipline) - @pos))) 
  end 
  select distinct(rtrim(ltrim(substring(@ipline , 
  @pos + 1 , 
  len(@ipline) - @pos)))) as ipaddress from #temp 
drop table #temp 
set nocount off 
end 
go 

但是很多情況下由于安全問題是不允許使用xp_cmdshell,可以通過查詢SYS.DM_EXEC_CONNECTIONS : 

SELECT SERVERNAME = CONVERT(NVARCHAR(128),SERVERPROPERTY('SERVERNAME')) 
,LOCAL_NET_ADDRESS AS 'IPAddressOfSQLServer'
,CLIENT_NET_ADDRESS AS 'ClientIPAddress'
 FROM SYS.DM_EXEC_CONNECTIONS WHERE SESSION_ID = @@SPID
您可能感興趣的文章:
  • SQL Server出現System.OutOfMemoryException異常的解決方法
  • MySQL Memory 存儲引擎淺析
  • mysql Out of memory (Needed 16777224 bytes)的錯誤解決
  • mysqld-nt: Out of memory (Needed 1677720 bytes)解決方法
  • mysql Sort aborted: Out of sort memory, consider increasing server sort buffer size的解決方法
  • SQL Server誤設置max server memory的處理方法

標簽:福建 通遼 廣安 馬鞍山 南京 陜西 河北 阿里

巨人網絡通訊聲明:本文標題《SqlServer如何通過SQL語句獲取處理器(CPU)、內存(Memory)、磁盤(Disk)以及操作系統相關信息》,本文關鍵詞  SqlServer,如何,通過,SQL,語句,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SqlServer如何通過SQL語句獲取處理器(CPU)、內存(Memory)、磁盤(Disk)以及操作系統相關信息》相關的同類信息!
  • 本頁收集關于SqlServer如何通過SQL語句獲取處理器(CPU)、內存(Memory)、磁盤(Disk)以及操作系統相關信息的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美日韩在线直播| 自拍偷拍国产亚洲| 蜜桃av一区二区在线观看| 日韩影院免费视频| 色狠狠色狠狠综合| 国产人妖乱国产精品人妖| 日韩女优制服丝袜电影| 欧美大片在线观看一区二区| 国产午夜精品久久久久久久| 欧美一区三区二区| 国产一区不卡在线| 亚洲mv大片欧洲mv大片精品| 欧美日韩一二区| 欧美日韩一区视频| 国产女主播在线一区二区| 亚洲成人在线免费| 99久久国产综合精品色伊| 久99久精品视频免费观看| 一区在线观看免费| 日韩专区一卡二卡| 欧美偷拍一区二区| 99久久精品国产网站| 亚洲欧美激情在线| 亚洲大片一区二区三区| 三级久久三级久久久| 91黄色小视频| 中文字幕在线不卡视频| av资源网一区| 亚洲一区在线观看免费| 欧美岛国在线观看| 中文字幕综合网| 91黄色免费观看| 国产午夜精品一区二区| 国产欧美精品一区二区三区四区| 成a人片亚洲日本久久| 一区在线观看免费| 久久久av毛片精品| 日韩精品成人一区二区三区| 蜜乳av一区二区| 夜夜嗨av一区二区三区中文字幕 | 国产精品国模大尺度视频| 婷婷综合五月天| 欧美tk丨vk视频| 午夜av区久久| av一区二区三区四区| 欧美性猛片aaaaaaa做受| 洋洋成人永久网站入口| 色综合久久66| 国产精品免费丝袜| 欧美色图免费看| 亚洲在线视频网站| 亚洲一级在线观看| 在线精品亚洲一区二区不卡| 国产资源精品在线观看| 在线观看免费亚洲| 国产在线不卡视频| 久久久久久久av麻豆果冻| 狠狠色丁香婷婷综合久久片| 91视频在线观看| 亚洲国产精品影院| 轻轻草成人在线| 精品日韩欧美在线| 国产麻豆精品一区二区| 成人一区在线看| 国产精品色婷婷久久58| 99国产精品99久久久久久| 91最新地址在线播放| 欧美mv日韩mv| 99这里都是精品| 国产成人av一区二区| 亚洲欧美一区二区三区孕妇| 日韩欧美激情四射| 欧美群妇大交群的观看方式| 亚洲精品在线一区二区| 午夜欧美大尺度福利影院在线看 | 日韩欧美国产一二三区| 国内精品自线一区二区三区视频| 亚洲蜜臀av乱码久久精品| 欧美日韩视频在线一区二区| 亚洲激情在线激情| 国产精品99久久久| 欧美性猛片xxxx免费看久爱| 麻豆成人综合网| 亚洲成人资源在线| 欧美麻豆精品久久久久久| 欧美性高清videossexo| 免费精品视频在线| 午夜久久久影院| 免费观看30秒视频久久| 国产经典欧美精品| 欧美日韩色一区| 国产成人综合自拍| 免费高清不卡av| 极品销魂美女一区二区三区| 日韩美女在线视频| 久久99国产精品免费| 欧美午夜精品一区| 亚洲精品高清在线观看| 欧美性感一区二区三区| 欧美日免费三级在线| 秋霞成人午夜伦在线观看| 欧美va亚洲va香蕉在线| 久久久www成人免费毛片麻豆| 日韩一区二区三区四区五区六区| 亚洲综合色丁香婷婷六月图片| 精品粉嫩超白一线天av| 91精品国产综合久久精品| 日本一区二区免费在线| 成人少妇影院yyyy| 视频一区视频二区中文字幕| 国产欧美日韩精品在线| 久久久影院官网| 欧美xxxxx牲另类人与| 久久久久成人黄色影片| 精品对白一区国产伦| 日韩一区二区电影网| 亚洲一级电影视频| 亚洲欧洲韩国日本视频| 麻豆国产91在线播放| 国产乱人伦精品一区二区在线观看| 国产精品超碰97尤物18| 欧美精品一卡二卡| 欧美tickling网站挠脚心| 国内精品免费**视频| 欧美精品一二三| 91精品免费在线| 久久精品亚洲精品国产欧美 | 亚洲国产另类av| 国产精品三级久久久久三级| 亚洲成人免费影院| 一本到不卡免费一区二区| 国产一区二区三区黄视频| thepron国产精品| 亚洲日本在线视频观看| 国产一区二区调教| 一区二区三区不卡在线观看| av在线免费不卡| 亚洲另类春色国产| 精品系列免费在线观看| 日本视频一区二区三区| 亚洲视频1区2区| 亚洲伊人色欲综合网| 欧美精品一区二区三区在线播放| 在线视频中文字幕一区二区| 欧美区一区二区三区| 91精品国产91久久久久久一区二区 | 国产一区欧美日韩| 亚洲成人久久影院| 无码av中文一区二区三区桃花岛| 国产精品日产欧美久久久久| 美女在线一区二区| 国产乱一区二区| 欧美性色黄大片手机版| 亚洲欧美综合网| 国产精品久久久久国产精品日日| 国产精品久久免费看| 久久精品国产精品亚洲综合| 99久久精品免费看国产免费软件| 欧美专区日韩专区| 欧美mv和日韩mv国产网站| 免费观看在线综合| 亚洲国产成人精品视频| 欧美一区二区在线播放| 91婷婷韩国欧美一区二区| 69av一区二区三区| 亚洲综合图片区| 狠狠狠色丁香婷婷综合久久五月| 色综合天天综合网国产成人综合天| 亚洲欧美电影院| 国产精品久久三区| 日韩av一区二| 欧美国产日韩亚洲一区| 久久久亚洲精品石原莉奈| 欧美国产日韩精品免费观看| 日韩不卡一区二区| 亚洲第一搞黄网站| 国产91精品露脸国语对白| 日韩成人免费在线| 北岛玲一区二区三区四区| 欧美一级久久久| 依依成人精品视频| 水野朝阳av一区二区三区| 处破女av一区二区| 欧美精品色一区二区三区| 欧美一区二区福利视频| 国产无人区一区二区三区| 麻豆91免费观看| 久久精品亚洲精品国产欧美kt∨| 中文字幕亚洲综合久久菠萝蜜| 亚洲福利视频一区二区| 91黄色激情网站| 免费看欧美美女黄的网站| 欧美群妇大交群中文字幕| 欧美一区二区视频免费观看| 久久久不卡影院| 2023国产一二三区日本精品2022| 国产精品综合在线视频| 一本一本大道香蕉久在线精品| 精品福利在线导航| 99久久精品免费看|