【问题标题】:Using WMI to get SQL Server 2008 version fails使用 WMI 获取 SQL Server 2008 版本失败
【发布时间】:2011-12-27 07:43:14
【问题描述】:

我正在尝试使用 WMI 获取 SQL Server 2008 及更高版本的版本,我正在使用 ComputerManagement10 的类和

的查询
select PropertyStrValue 
from SqlServiceAdvancedProperty 
where PropertyName = \'VERSION\' and ServiceName =\'MSSQL$SQL2008R2SP1'\'

其中ServiceName 是 SQL Server 的实例。

我遇到了一个奇怪的问题,即我得到的预期结果(PropertyStrValue 字段)与常规的 select @@version 或“右键单击 -> 属性”(sqlservr.exe)不同

WMI 获得的版本是“10.51.2500.0”,而原来的版本是“10.50.2500.0”

我检查了两次以上,以确保这是正确的实例、SQL Server、主机等,但似乎我并不是唯一经历过这种事情的人。

有谁知道为什么会发生这种行为以及如何解决它?

有谁知道使用WMI检索SQL Server版本是否可靠?

提前致谢。

【问题讨论】:

    标签: sql-server wmi


    【解决方案1】:

    我无法评论使用 WMI,但来自 select @@version 或更好的 select SERVERPROPERTY('ProductVersion') 的值是正确的

    另外,you doing this correctly 排在首位吗?

    【讨论】:

    • 只是好奇,为什么它更好?依赖字符串变量而不是系统调用似乎不太可靠
    • @abatishchev:它不是“字符串”:它是对数据库引擎的内部调用,就像正确的 WMI 调用一样。我怀疑这里的 WMI 调用是错误的(根据我的链接),不使用相同的源并且 OP 证明它是错误的......
    • 但是你可以调用select SERVERPROPERTY('ProductVersion1'),但不能调用select @@version1,这就是我所说的“可靠”——propertyname 不是在编译时可验证的
    • 对不起?我的意思是查询编译时间,例如,在 SSMS 中。
    【解决方案2】:

    我想知道我的应用程序中的 SQL Server 版本,您的查询很有用。

    我得到同样的错误!

    如果你发现了什么,我会找到这个:

    Wrong SQL Version

    显然只是一个错误,但它对我有好处

    SQL Version list

    10.50 / 10.51 => 2008 R2

    10.00 => 2008

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多