如何在没有安装管理工作室的情况下找出安装了哪个版本?我有一台用作另一个软件的许可证管理器的服务器。在调查高 RAM 使用率警报后,我发现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 Native Client 10.0:建立与 SQL Server 的连接时发生与网络相关或实例-> 特定的错误。未找到或无法访问服务器。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。 Sqlcmd:错误:Microsoft SQL Server Native Client 10.0:登录超时已过期。
@thomas -在我问这个问题之前,我注意到了Stock Keeping Unit Name,但这似乎太简单了,我想我最初的怀疑是正确的。
小智 23
你可以试试命令行工具:
C:\>sqlcmd -S [SERVER] -d [DB_NAME] -E -Q "SELECT @@VERSION"
Run Code Online (Sandbox Code Playgroud)
Bob*_*eri 19
如果 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: )
Run Code Online (Sandbox Code Playgroud)
Tho*_*ger 19
这可以通过 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
}
}}
Run Code Online (Sandbox Code Playgroud)
同样,可以直接在 SQL Server 配置管理器工具中找到相同的信息。打开后,右键单击您的 SQL Server 服务并进入Properties。然后单击高级选项卡并查看库存单位名称键。在那里你会找到你正在使用的版本。
Sol*_*zky 13
只需运行以下命令:
{InstanceHome}\MSSQL\Binn\sqlservr.exe -v [-s InstanceName]
Run Code Online (Sandbox Code Playgroud)
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".
这种方法总是有效,不像其他解决方案在以下情况下不起作用:
SELECT @@VERSION;
不是一个选项)?示例 1
如果您只安装了一个 Instance,则不需要使用-s
开关:
C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn>sqlservr.exe -v
Run Code Online (Sandbox Code Playgroud)
返回:
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
Run Code Online (Sandbox Code Playgroud)
示例 2
如果您在机器上安装了多个实例,您还需要使用-s
开关来指定您感兴趣的实例,否则它可以混合版本信息:
C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS2014\MSSQL\Binn>sqlservr.exe -v
-s SQLEXPRESS2014
Run Code Online (Sandbox Code Playgroud)
返回:
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
Run Code Online (Sandbox Code Playgroud)
确定程序版本信息的最快、最简单和最可靠的方法就是简单地从程序中请求该信息。大多数程序(*.COM和*.EXE)都有一个命令行开关/标志/参数/选项/dely-ma-bob,将显示帮助和/或版本信息。
根据程序本身,命令行开关将带有以下前缀之一:
而且,同样取决于程序本身,命令行开关将是以下之一:
{ 上面显示的 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]
Run Code Online (Sandbox Code Playgroud)
但是,记事本只有非常有限的命令行开关集,并且没有一个显示版本信息。
替代的,没有大惊小怪的方法:
检查注册表:
项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{VersionNumber}\Tools\Setup
Name: Edition
如果您知道版本号(例如 SQL Server 2012 = 110、SQL Server 2014 = 120 等),则可以通过在命令提示符下运行以下命令来专门针对它的版本:
REG QUERY "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\{VersionNumber}\Tools\Setup" /v /e /f Edition
Run Code Online (Sandbox Code Playgroud)
返回一个类似于以下内容的条目:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\Tools\Setup
Edition REG_SZ Developer Edition
Run Code Online (Sandbox Code Playgroud)如果您想查看安装的版本,请在命令提示符下运行以下命令:
REG QUERY "HKLM\SOFTWARE\Microsoft\Microsoft SQL Server" /s /v /e /f Edition
Run Code Online (Sandbox Code Playgroud)
返回一个或多个类似于上面显示的条目和以下条目:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\Setup
Edition REG_SZ Express Edition
Run Code Online (Sandbox Code Playgroud)查看安装日志:
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
归档时间: |
|
查看次数: |
49027 次 |
最近记录: |