0

In SQL Express bootstrapper there is a file called SqlExpressChk.exe used to check the version of the installed SQL Express.

Unfortunately I've read that this file is looking for instance name SQLEXPRESS. Does anybody know how to force SqlExpressChk to look for another instance name ? I don't install SQL Server with default instance name.

Thanks.

4

1 回答 1

0

没有办法。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;
}
于 2012-04-25T05:57:22.603 回答