SQL Express ブートストラップには、インストールされている SQL Express のバージョンを確認するために使用される SqlExpressChk.exe というファイルがあります。
残念ながら、このファイルがインスタンス名 SQLEXPRESS を探していることを読みました。SqlExpressChk に別のインスタンス名を強制的に探す方法を知っている人はいますか? デフォルトのインスタンス名で SQL Server をインストールしません。
ありがとう。
SQL Express ブートストラップには、インストールされている SQL Express のバージョンを確認するために使用される SqlExpressChk.exe というファイルがあります。
残念ながら、このファイルがインスタンス名 SQLEXPRESS を探していることを読みました。SqlExpressChk に別のインスタンス名を強制的に探す方法を知っている人はいますか? デフォルトのインスタンス名で SQL Server をインストールしません。
ありがとう。
方法はありません。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;
}