0

我一直在谷歌搜索并阅读这篇文章

C# 如何以编程方式获取 SQL Server 安装路径?

这正是我在 VB.NET 中所需要的,但是我不擅长将这段代码翻译成 VB.NET 代码。因此,任何帮助将不胜感激。谢谢你。

注意:我使用的是 SQL Server 2005 和 Visual Basic 2008

4

4 回答 4

2

虽然这个问题最初的标题是关于检索 SQL Server 的安装路径,但我觉得它更多的是关于代码翻译问题(解决方案已经存在,只是语言不正确)。

但是后来我觉得原代码中的方法相当生硬。

Evan 为您提供了我认为是现有解决方案的可行翻译。但可能是执行此特定任务的一种更简单的方法 - 假设您只需要找到您已经连接到的实例的安装路径,并假设可以读取注册表的用户也将具有VIEW SERVER STATE权限 - 是发出这个从您的程序中对 DMVsys.dm_os_loaded_modules进行简单查询:

SELECT name 
  FROM sys.dm_os_loaded_modules
  WHERE name LIKE '%sqlservr.exe';

这会给你这样的东西:

C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\Binn\sqlservr.exe

您需要进行一些解析,具体取决于您所追求的内容(例如,您想停在MSSQL,还是Binn?),但这比阅读注册表或其他恕我直言的方法要容易得多。

于 2013-03-23T15:08:11.580 回答
1

我只是用了一个代码转换器......只有基本的东西需要改变..

Using sqlServerKey As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Microsoft SQL Server")
    For Each subKeyName As String In sqlServerKey.GetSubKeyNames()
        If subKeyName.StartsWith("MSSQL.") Then
            Using instanceKey As RegistryKey = sqlServerKey.OpenSubKey(subKeyName)
                Dim instanceName As String = instanceKey.GetValue("").ToString()

                If instanceName = "MSSQLSERVER" Then
                    'say
                    Dim path__1 As String = instanceKey.OpenSubKey("Setup").GetValue("SQLBinRoot").ToString()
                    path__1 = Path.Combine(path__1, "sqlserver.exe")
                    Return path__1
                End If
            End Using
        End If
    Next
End Using

如果您只是阅读有关 C# 的快速文章,您会注意到字符串的声明方式不同,并且存在细微的语法差异,例如foreachvsfor each

您可以在此处阅读一些更常见的差异。

于 2013-03-23T14:49:06.027 回答
1

我使用了一个非常好的(离线)工具,叫做Convert .NET Free

它来自www.fishcodelib.com

这是最新版本的直接链接(截至 2014 年 4 月 19 日)大小: 2.06MB,文件:Zip:

[直接链接]

希望这有一些用处;)

PS这个软件需要.NET Framework 4.5

于 2013-03-26T02:25:25.627 回答
0

这几乎永远不会失败!:) 祝你好运

http://www.developerfusion.com/tools/convert/csharp-to-vb/

于 2013-03-24T00:13:53.850 回答