web-dev-qa-db-ja.com

物理サーバーまたは仮想マシンSQLサーバー?

SQL Serverが物理サーバー上で実行されているのか、仮想サーバー上で実行されているのかを知るために、SQLスクリプトを介して把握する方法はありますか?

6
Heisenberg

スクリプトを見つけました:

SELECT SERVERPROPERTY('computernamephysicalnetbios') AS ServerName
,dosi.virtual_machine_type_desc
,Server_type = CASE 
WHEN dosi.virtual_machine_type = 1
THEN 'Virtual' 
ELSE 'Physical'
END
FROM sys.dm_os_sys_info dosi

CMSを構成している場合は、CMSから以下のスクリプトを複数のサーバーに対して実行します。

SELECT dosi.virtual_machine_type_desc
,Server_type = CASE 
WHEN dosi.virtual_machine_type = 1
THEN 'Virtual' 
ELSE 'Physical'
END
FROM sys.dm_os_sys_info dosi 
3
Heisenberg

SQL Server 2008 R2を使用している場合RTM以前の場合、CMDコマンドがあります "[〜#〜] systeminfo [〜#〜] "システムモデルに関する情報があります。
または
インスタンスでcmdshellが有効になっている場合、SQL Server Management Studioから実行できます。

DECLARE @result int
EXEC @result = xp_cmdshell 'SYSTEMINFO'

システムメーカー:VMware、Inc.
システムモデル:VMware仮想プラットフォーム

新しい列(virtual_machine_type, virtual_machine_type_desc)DMVでsys.dm_os_sys_infoはSQL Server 2008 R2 Service Pack 1で導入されました

http://blogs.msdn.com/b/sqlosteam/archive/2011/05/11/more-on-dmv-changes-in-sql-2008-r2-sp1.aspx

7
AA.SC

以下を使用してPowershellを使用します。

$Virtual = Get-wmiobject win32_computersystem | Where-Object model -EQ 'Virtual Machine'
  if ($Virtual) 
  {
  Write-Host "SQL Server Running on Virtual Server" -ForegroundColor Green
  }
  else 
  {
  Write-Host "SQL Server Running on Physical Server" -ForegroundColor Yellow 
  }

詳細はこちら https://mkelsawy.blogspot.com/2019/09/DetermineHostedSQLServerUsingPowershell.html

0