以往我們想要知道SQL Server裝在哪一個版本的O/S,這個時候打個電話請教SP,厲害的SP就會很快找到,然後精準的回覆我們O/S和DB的Version、Edition,甚至還會補充硬體資源的配置;但如果SP很忙,又沒有rdp權限時,以前我們會串SQL查dmv解決(dm_os_windows_info),今年SQL Server 2017多了新的DMV:dm_os_host_info 能同時提供 Windows 和 Linux 作業系統資訊,快來試試。
查詢目前主機資源配置、O/S版本及DB版本資訊:
透過DMV: sys.dm_os_sys_info、 sys.dm_os_windows_info查詢
--infra
SELECT cpu_count
,physical_memory_kb
,sqlserver_start_time
from sys.dm_os_sys_info --SQL Server (starting with 2008)
--o/s
SELECT * from sys.dm_os_windows_info --SQL Server (starting with 2008)
--db
SELECT
LEFT(@@VERSION, CHARINDEX('-', @@VERSION)-1) N'DB Version' ,
SERVERPROPERTY('Edition') N'Edition',
SERVERPROPERTY('ProductVersion') N'ProductVersion',
SERVERPROPERTY('ProductLevel') N'ProductLevel',
DATABASEPROPERTYEX('master','Version') N'Version'
以史丹利筆電為例:
8 Core,16GB Ram,Win 8 professional,SQL Server 2014 Developer Edition
這幾年SQL Server變的厲害,2015、2016 先後在Gartner Magic Quadrant操作類資料庫報告中取代Oracle拿下冠軍 ,春風得意的他,2017果然變心愛上Linux,從SQL 2008就跟著單身漢奮鬥的dm_os_windows_info顯得有點門當戶不對,只好在SQL On Linux環境執行時出現了國防部的黑畫面作無聲的抗議。
Linux環境查詢dm_os_windows_info
SELECT * from sys.dm_os_windows_info --SQL Server (starting with 2008)
為了排解家庭糾紛,SQL Server多了一個新的dmv:dm_os_host_info,來筆記新人,還有(dm_os_sys_info)的欄位增加。
SQL Server 2017 dm_os_host_info
用dm_os_host_info替換dm_os_windows_info
--infra
SELECT cpu_count
,physical_memory_kb
,sqlserver_start_time
from sys.dm_os_sys_info --SQL Server (starting with 2008)
--o/s
SELECT * from sys.dm_os_host_info --SQL Server (starting with 2008)
--db
SELECT
LEFT(@@VERSION, CHARINDEX('-', @@VERSION)-1) N'DB Version' ,
SERVERPROPERTY('Edition') N'Edition',
SERVERPROPERTY('ProductVersion') N'ProductVersion',
SERVERPROPERTY('ProductLevel') N'ProductLevel',
DATABASEPROPERTYEX('master','Version') N'Version'
Linux O/S的資訊很清楚的呈現!也包含發散版本資訊編號7.3。
切到Windows環境執行,資訊也能完整呈現,版本編號6.2。
host_release
- 10是Windows 10或Windows Server 2016
- 6.3是Windows 8.1或Windows Server 2012 R2
- 6.2是Windows 8或Windows Server 2012
host_sku(editions)
- 4 =企業版(Enterprise)
- 7 =標準服務器版(Standard)
- 8 =數據中心服務器版(Data Center)
- 48 =專業版(Professional)
dm_os_sys_info增加欄位
取得infra資訊時,多選了3個欄位
- sql_memory_model_desc: 記憶體的使用模式(通常希望SP幫我們設定LOCK_PAGES)(SQL2016SP1)
- cores_per_socket : 每顆CPU有幾核心(SQL2017)。
- socket_count: 幾顆CPU(SQL2017)。
--infra
SELECT cpu_count
,physical_memory_kb
,sqlserver_start_time
,sql_memory_model_desc
,cores_per_socket
,socket_count
from sys.dm_os_sys_info
執行結果:
小結
魔力象限magic quadrant
magic quadrant for operational database management systems
magic quadrant for business intelligence and analytics platforms
寫完了,來去跑個10km。芝加哥馬拉松剩20天。
參考:
sys.dm_os_host_info (Transact-SQL)
sys.dm_os_sys_info (Transact-SQL)