SQL Serverが物理サーバー上で実行されているのか、仮想サーバー上で実行されているのかを知るために、SQLスクリプトを介して把握する方法はありますか?
スクリプトを見つけました:
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
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
以下を使用して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