【问题标题】:How to check if SQL Server version 2008 or higher in c# Windows Forms [duplicate]如何在c#Windows Forms中检查SQL Server 2008或更高版本[重复]
【发布时间】:2012-06-15 12:14:46
【问题描述】:

可能重复:
How can I determine installed SQL Server instances and their versions?

我一直在搜索,如果安装了 sql server 并且至少是 2008 年的,我找不到通过注册表验证的方法。 因为似乎对于每个版本,他们都会更改路径中的某些内容,或者我只是没有看到它。

提前谢谢你, 米格尔·索萨

【问题讨论】:

  • 对不起,但它不是一回事。 1º 我想知道 sql server 的版本是 10.0(thnx @AaronBertrand) 还是更高版本。 2º 我没有实例的登录权限。所以我不能执行 t-sql 和 ado.net

标签: c# sql-server winforms


【解决方案1】:

您可以在以下键中扫描实例名称:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL\

您可以从那里获取每个名称和数据列(例如,命名实例“SQL2008”可能会显示“MSSQL10.SQL2008”),并通过将实例标识符(“MSSQL.SQL2008”)附加到此 reg 来查找版本路径:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\
  MSSQL10.SQL2008\MSSQLServer\CurrentVersion\

在该键中,将有一个名为“CurrentVersion”的条目,数据值将具有版本号。

这将返回一个类似11.0.2316.0 的字符串。在这种情况下,您只真正关心小数点后第二位之前的字符。如果这反映了 10.0 或更高版本,那就是 SQL Server 2008 或更高版本(10.0 = 2008、10.5 = 2008 R2、11.0 = 2012)。如果这反映了 9.0 或更低,那就是 2008 年之前的情况(9.0 = 2005、8.0 = 2000 等)。

【讨论】:

  • 这假设有一个活动的数据库连接;这是确定是否安装SQL服务器之后的几个步骤。
  • @AaronBertrand 对不起,我应该更具体一些,我无权访问服务器,因为我不知道它是否已安装,所以我无法执行 T-SQL。
  • 啊,我错过了那部分。好的,是的,您不能使用 T-SQL,因为即使您确定安装了一个实例,您也可能根本无法连接到它。我想你会得到足够的答案,但你需要去stackoverflow.com/questions/141154/…stackoverflow.com/questions/949852/…并结合一些答案。
  • 如果 sql server 未安装,是否有可能在实例中留下注册表?我的意思是卸载后会存在 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names'
  • 当然,我认为如果执行正确的卸载,应该清理注册表内容,但人们可能没有以正确的方式删除 SQL Server。也有可能安装了 SQL Server 实例但它没有运行,或者由于各种原因无法启动,或者您无法通过 Windows auth 连接到它,或者用户甚至无法手动连接到它,因为他们'不是管理员的成员,他们忘记了 sa 密码。因此,注册表中的存在当然并不表示 SQL Server 实例已启动并正在运行并且可供使用。
猜你喜欢
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
  • 2013-12-19
  • 2010-11-19
  • 2010-09-23
相关资源
最近更新 更多