如何使用c#从后面的代码中找到SQL Server实例名称和服务器名称?

Fir*_*nov 3 c# sql-server

可能重复:
SqlDataSourceEnumerator.Instance.GetDataSources()找不到本地SQL Server 2008实例

我使用下面的代码来获取本地机器中的所有实例名称和服务器名称,但它似乎只返回一个实例; 如何在我的本地机器上获取实例名称和服务器名称的所有列表?

string myServer = Environment.MachineName;

DataTable servers = SqlDataSourceEnumerator.Instance.GetDataSources();

for (int i = 0; i < servers.Rows.Count; i++)
{
        if (myServer == servers.Rows[i]["ServerName"].ToString()) 
        {
            if ((servers.Rows[i]["InstanceName"] as string) != null)
            {
                CmbServerName.Visibility = Visibility.Visible;
                CmbServerName.Items.Add(servers.Rows[i]["ServerName"] + "\\" + servers.Rows[i]["InstanceName"]);

            }
            else
            {
                CmbServerName.Visibility = Visibility.Visible;
                CmbServerName.Items.Add(servers.Rows[i]["ServerName"]);

            }
        }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Tal*_*lha 5

获取已安装的sql server实例名称的另一种方法是读取您的计算机注册表.它将从本地计算机获取所有sql实例.

RegistryKey rk = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server");
            String[] instances = (String[])rk.GetValue("InstalledInstances");
            if (instances.Length > 0)
            {
                foreach (String element in instances)
                {
                    if (element == "MSSQLSERVER")
                        Console.WriteLine(System.Environment.MachineName);
                    else
                        Console.WriteLine(System.Environment.MachineName + @"\" + element);

                }
                Console.ReadLine();
            }
Run Code Online (Sandbox Code Playgroud)