没有办法。SqlExpressChk.exe 仅限于默认实例名称 SQLEXPRESS。它不会检测 MSDN 上记录的其他命名实例。
但是,您可以通过多种其他方式检查实例。
在这个相关的 SO question的答案中列出了各种各样的方法。
这个简单的谈话文章中记录了PowerShell :
# SQLVer.ps1
# usage: ./SQLVer.ps1
# Check SQL version
foreach ($svr in get-content "C:\data\AllServers.txt")
{
$con = "server=$svr;database=master;Integrated Security=sspi"
$cmd = "SELECT SERVERPROPERTY('ProductVersion') AS Version, SERVERPROPERTY('ProductLevel') as SP"
$da = new-object System.Data.SqlClient.SqlDataAdapter ($cmd, $con)
$dt = new-object System.Data.DataTable
$da.fill($dt) | out-null
$svr
$dt | Format-Table -autosize
}
此 MSDN 文章中还记录了 WMI :
try
{
// Run a WQL query to return information about SKUNAME and SPLEVEL about installed instances
// of the SQL Engine.
ManagementObjectSearcher getSqlExpress =
new ManagementObjectSearcher("root\\Microsoft\\SqlServer\\ComputerManagement",
"select * from SqlServiceAdvancedProperty where SQLServiceType = 1 and
ServiceName = '" + instance + "' and (PropertyName = 'SKUNAME' or
PropertyName = 'SPLEVEL')");
// If nothing is returned, SQL Express isn't installed.
if (getSqlExpress.Get().Count==0)
{
return false;
}
}
catch (ManagementException e)
{
Console.WriteLine("Error: " + e.ErrorCode + ", " + e.Message);
return false;
}