我一直在谷歌上搜索这篇文章
C# How to get SQL Server installation path programatically?
这正是我在VB.NET中所需要的,但是我不擅长将这段代码翻译成VB.NET代码。所以,任何帮助都会非常感激。谢谢。
注意:我正在使用SQL Server 2005和Visual Basic 2008
答案 0 :(得分:2)
虽然这个问题最初的标题是关于检索SQL Server的安装路径,但我觉得它更多的是关于代码转换问题(解决方案已经存在,只是没有使用正确的语言)。
但后来我认为原始代码中的方法相当直接。
Evan为您提供了我认为现有解决方案的可行翻译。但是执行此特定任务可能是一种更简单的方法 - 假设您只需找到已连接的实例的安装路径,并假设可以读取注册表的用户也具有VIEW SERVER STATE
权限 - 是从您的程序中对the DMV sys.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
?),但这比阅读注册表要容易得多或其他方法恕我直言。
答案 1 :(得分: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#的快速文章,您会注意到字符串的声明方式不同,并且存在较小的语法差异,例如foreach
vs for each
您可以阅读here了解更常见的差异。
答案 2 :(得分:1)
我使用了一个非常好的( 离线 )工具,名为 Convert .NET Free
这是最新版本的直接链接(截至19/04/14)大小: 2.06MB,文件:Zip:
希望这有一些用处;)
P.S。此软件需要 .NET Framework 4.5 。
答案 3 :(得分:0)
这几乎永远不会失败!祝你好运