因为要做一个数据库辅助小工具,所以需要查到本地与局域网内所有sqlserver实例。完成后将方法写出来,供大家参考:
下面方法是分别将本地及局域网内所有sqlserver实例查找出来并绑定到ComboBox控件中的示例。
一、查找本地sqlserver实例
private void Source_DataBindByLocal()
{
//获取本机的计算机名
string HostName = Dns.GetHostName();
//获取本机的所有服务名
ServiceController[] services = ServiceController.GetServices();
List<string > list = new List<string >();
//循环判断所有服务是否为sqlserver实例
foreach (ServiceController s in services)
{
if (s.ServiceName.ToLower() == "mssqlserver")
{
list.Add(HostName);
}
else if (s.ServiceName.ToLower().IndexOf("mssql$") != -1)
{
list.Add(HostName + "\\" + s.ServiceName.
substring(s.ServiceName.IndexOf("$") + 1));
}
}
this.cbSource.DataSource = list;
this.cbSource.SelectedIndex = this.cbSource.Items.IndexOf(HostName);
}
二、查找局域网内sqlserver实例
private void Source_DataBindByLAN()
{
//枚举本地网络内的所有可用SQL Server实例
SqlDataSourceEnumerator SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance;
//以DataTable的形式返回局域网内所有可见的sqlserver实例
DataTable dt = SqlDataSourceEnumerator.GetDataSources();
List<string > list = new List<string >();
foreach (DataRow dr in dt.Rows)
{
list.Add(dr["ServerName"].ToString());
}
this.cbSource.DataSource = list;
}
很简短的两个方法,供大家参考。