您如何查找未安装SSMS的SQL Server版本/版本?


20

在未安装Management Studio的情况下如何查找已安装的版本?我有一台服务器,充当另一软件的许可证管理器。在调查内存使用率过高警报时,我发现sqlservr.exe进程占用了将近2 GB的RAM。

我浏览了程序菜单,发现已安装了配置管理器,否则,它几乎是白手起家。我单击了EXE文件的属性,找到了10.50.1600.1,但没有找到表明它是Express,Dev,STN,ENT等的位置。

如果要猜测,这是速成版,但我想知道是否有明显的告示牌。

更新:@Bob-文件告诉我我所知道的,而不是版本。

@valo-运行该命令并确认启用了命名管道时出现以下错误:

HResult 0x35,级别16,状态1命名管道提供程序:无法打开与SQL Server [53]的连接。Sqlcmd:错误:Microsoft SQL Server本机客户端10.0:建立与SQL Server的连接时发生了与网络相关或特定于实例的错误。无法找到服务器或无法访问服务器。检查实例名称是否正确,以及是否将SQL Server配置为允许远程连接。有关更多信息,请参见SQL Server联机丛书。Sqlcmd:错误:Microsoft SQL Server本机客户端10.0:登录超时已过期。

@thomas- 在问问题之前,我注意到库存单位名称,但这似乎太容易了,我想我最初的怀疑是正确的。

Answers:


18

这可以通过WMI(在下面的示例中通过PowerShell访问)来完成。我所做的只是通过SqlServiceAdvancedProperty类查看SQL Server服务的属性(“ SKUNAME”)。注意,有一些特定于环境的变量需要在代码顶部进行相应设置。

$ComputerName = "YourComputerName"
$ServiceName = 'YourEngineServiceName'
$PropertyName = "SKUNAME"

# retrieve the most current version of the ComputerManagement namespace
#
$ComputerManagementNamespace =
    (Get-WmiObject -ComputerName $ComputerName -Namespace "root\microsoft\sqlserver" -Class "__NAMESPACE" |
        Where-Object {$_.Name -like "ComputerManagement*"} |
        Select-Object Name |
        Sort-Object Name -Descending |
        Select-Object -First 1).Name
 
if ($ComputerManagementNamespace -eq $null) {
    Write-Error "ComputerManagement namespace not found"
}
else {
    $ComputerManagementNamespace = "root\microsoft\sqlserver\" + $ComputerManagementNamespace
} 

# get the property and its value
#
Get-WmiObject -ComputerName $ComputerName -Namespace $ComputerManagementNamespace -Class "SqlServiceAdvancedProperty" |
    Where-Object {
        $_.ServiceName -eq $ServiceName -and
        $_.PropertyName -eq $PropertyName
    } |
    Select-Object @{Name = "ComputerName"; Expression = { $ComputerName }},
        ServiceName,
        @{Name = "PropertyValue"; Expression = {
            if ($_.PropertyValueType -eq 0) {
                $_.PropertyStrValue
            }
            else {
                $_.PropertyNumValue
            }
        }}

同样,可以在SQL Server配置管理器工具中直接找到相同的信息。打开它后,右键单击您的SQL Server服务,然后进入“ 属性”。然后单击“ 高级”选项卡,然后查看“ 库存单位名称”键。您将找到正在使用的版本。


23

您可以尝试使用命令行工具:

C:\>sqlcmd -S [SERVER] -d [DB_NAME] -E -Q "SELECT @@VERSION"

18

如果SQL Server服务正在运行(根据您的描述,它正在运行),请检查SQL Server错误日志。您不需要安装SSMS即可完成此操作,因为它只是一个文本文件。文件位置可能因安装方式而异,但是“ 联机丛书”在此处显示默认位置

日志中的第一项应包含版本/版本信息。

编辑:尽管上面的问题中有评论,这肯定会告诉您版本:

2014-06-08 00:05:00.050 spid158      Microsoft SQL Server 2012 (SP1) - 11.0.3381.0 (X64) 

Aug 23 2013 20:08:13 

Copyright (c) Microsoft Corporation

Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

12

快速回答

只需运行以下命令:

{InstanceHome}\MSSQL\Binn\sqlservr.exe -v [-s InstanceName]

NOTE ABOUT SQL Server Express LocalDB: LocalDB can only be determined by the
existence of the following folder:

C:\Program Files\Microsoft SQL Server\{SQL Server Version: 110, 120, etc}\LocalDB\Binn

Running "sqlserver.exe -v" doesn't help as it reports as being "Developer Edition", and
searching the Registry it reports as being "Express Edition".

与其他在以下情况下不起作用的解决方案不同,此方法始终有效:

  • 您不想编写程序(例如PowerShell)?
  • 客户端工具尚未安装(需要使用SQLCMD.EXE)吗?
  • 没有SQL Server日志文件,或者没有包含任何启动/重新启动事件的日志文件?
  • SQL Server未运行(因此SELECT @@VERSION;无法选择)?

示例1
如果仅安装了一个实例,则无需使用该-s开关:

C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn>sqlservr.exe -v

返回值:

2015-08-01 11:40:11.63 Server      Logging to event log is disabled. Startup option '-v' is supplied, either from the registry or the command prompt.
2015-08-01 11:40:11.63 Server      Microsoft SQL Server 2012 - 11.0.5343.0 (X64)
        May  4 2015 19:11:32
        Copyright (c) Microsoft Corporation
        Developer Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

2015-08-01 11:40:11.63 Server      (c) Microsoft Corporation.
2015-08-01 11:40:11.63 Server      All rights reserved.
2015-08-01 11:40:11.63 Server      Server process ID is 3824.
2015-08-01 11:40:11.63 Server      System Manufacturer: '{CompanyName}', System Model: '{ModelNumber}'.
2015-08-01 11:40:11.63 Server      Authentication mode is MIXED.
2015-08-01 11:40:11.63 Server      The service account is '{AccountName}'. This is an informational message; no user action is required.
2015-08-01 11:40:11.63 Server      SQL Server shutdown has been initiated

示例2
如果您在计算机上安装了多个实例,则还需要使用-s开关来指定您对哪个实例感兴趣,否则它可以混合版本信息:

C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS2014\MSSQL\Binn>sqlservr.exe -v
       -s SQLEXPRESS2014

返回值:

2015-08-01 12:01:13.13 Server      Logging to event log is disabled. Startup option '-v' is supplied, either from the registry or the command prompt.
2015-08-01 12:01:13.13 Server      Microsoft SQL Server 2014 - 12.0.4213.0 (X64)
        Jun  9 2015 12:06:16
        Copyright (c) Microsoft Corporation
        Express Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )

2015-08-01 12:01:13.13 Server      UTC adjustment: -4:00
2015-08-01 12:01:13.13 Server      (c) Microsoft Corporation.
2015-08-01 12:01:13.13 Server      All rights reserved.
2015-08-01 12:01:13.13 Server      Server process ID is 1712.
2015-08-01 12:01:13.13 Server      System Manufacturer: '{CompanyName}', System Model: '{ModelNumber}'.
2015-08-01 12:01:13.13 Server      Authentication mode is WINDOWS-ONLY.
2015-08-01 12:01:13.13 Server      The service account is '{AccountName}'. This is an informational message; no user action is required.
2015-08-01 12:01:13.13 Server      SQL Server shutdown has been initiated

附加信息

确定程序版本信息的最快,最简单,最可靠的方法就是简单地从程序中请求该信息。大多数程序(* .COM* .EXE)都有一个命令行开关/标志/参数/选项/ Dealy-ma-bob,它将显示帮助和/或版本信息。

根据程序本身,命令行开关将以以下之一为前缀:

  • [没什么/娜达]
  • --
  • -
  • /

并且,再次取决于程序本身,命令行开关将为以下之一:

  • 最常见的:
    • v
  • 有时包括在一般帮助信息中:
    • H
    • 救命

{以上显示的SQL Server示例}

另一方面,命令行实用程序SQLCMD.EXE使用该-v开关将变量值传递到SQL脚本中,因此它仅在其常规信息显示中显示版本信息:

C:\>sqlcmd /?
Microsoft (R) SQL Server Command Line Tool
Version 11.0.2100.60 NT x64
Copyright (c) 2012 Microsoft. All rights reserved.

usage: Sqlcmd            [-U login id]          [-P password]
  [-S server]            [-H hostname]          [-E trusted connection]
  ...
  [-v var = "value"...]  ...
  ...
  [-? show syntax summary]

但是,NotePad仅具有非常有限的一组命令行开关,并且它们都不显示版本信息。


可选的简便方法:

  • 检查注册表:

    密钥:HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ {VersionNumber} \ Tools \ Setup
    名称:版本

    • 如果知道版本号(例如,SQL Server 2012 = 110,SQL Server 2014 = 120等),则可以通过在命令提示符处运行以下命令来专门为其指定版本:

      REG QUERY "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\{VersionNumber}\Tools\Setup" /v /e /f Edition

      返回类似于以下内容的一项:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup
          Edition    REG_SZ    Developer Edition
    • 如果您看到该版本的安装版本,请在命令提示符处运行以下命令:

      REG QUERY "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server" /s /v /e /f Edition

      返回一个或多个与上面和下面显示的条目相似的条目:

      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup
          Edition    REG_SZ    Express Edition
  • 检查安装日志:

    C:\ Program Files \ Microsoft SQL Server \ {SQL Server版本:110、120等} \ Setup Bootstrap \ Log \ {date_time} \ Detail.txt

    对于字符串“ IsExpressSku”:

    (03)2014-09-05 16:53:44 SQLEngine:--EffectiveProperties:IsExpressSku = True

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.