ぐるぐる回ってこの記事を読んだ
C#プログラムでSQL Serverのインストールパスを取得するには?
これはまさにVB.NETで必要なものですが、このコードをVB.NETコードに変換するのは苦手です。ですから、どんな助けでも大歓迎です。ありがとうございました。
注: SQL Server 2005 と Visual Basic 2008 を使用しています。
ぐるぐる回ってこの記事を読んだ
C#プログラムでSQL Serverのインストールパスを取得するには?
これはまさにVB.NETで必要なものですが、このコードをVB.NETコードに変換するのは苦手です。ですから、どんな助けでも大歓迎です。ありがとうございました。
注: SQL Server 2005 と Visual Basic 2008 を使用しています。
質問のタイトルは元々SQLServerのインストールパスの取得に関するものでしたが、コード変換の問題に関するものだと感じました(解決策はすでに存在していましたが、適切な言語ではありませんでした)。
しかし、元のコードのメソッドはかなり鈍いと思いました。
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
?)が、これは、レジストリやIMHOにある他のメソッドを読み取るよりもはるかに簡単です。
Convert .NET Freeという非常に優れた (オフライン) ツールを使用しています。
最新リリースへの直接リンクは次のとおりです (19/04/14 時点)サイズ: 2.06MB、ファイル: Zip:
これが役に立つことを願っています;)
PS このソフトウェアには.NET Framework 4.5が必要です。
コードコンバーターを使用しました...変更する必要があるのは基本的なことだけです..
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
。for each
より一般的な違いについては、こちらを参照してください。
これはほとんど失敗しません!:) 幸運を