3

次のコードを使用して、インストールされているサーバー インスタンスのリストを取得しています。

Dim sqldatasourceenumerator1 As SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance
    datatable1 = sqldatasourceenumerator1.GetDataSources()

このコードが正常に機能する場合もありますが、ほとんどの場合、コードが失われ、システムが応答しなくなります。

すべての条件で信頼できる代替コードを教えてもらえますか? ありがとう

4

1 に答える 1

1

レジストリを確認できます。たとえば、次のレジストリ キーを読み取ってみてください。

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

64 ビット OS 上の 32 ビット インスタンスは、次のリストに表示されます。

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

64 ビット Windows で 64 ビット インスタンスのこの情報を取得するための ac# コード スニペットを次に示します。

RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey key = baseKey.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");

foreach (string s in key.GetValueNames())
{
   ...
}

key.Close();
baseKey.Close(); 
于 2013-06-29T13:47:55.367 に答える