我正在尝试使用以下代码将可用SQL服务列表显示到列表框中:
DataTable dt = SqlDataSourceEnumerator.Instance.GetDataSources();
foreach (DataRow dr in dt.Rows)
{
listBox3.Items.Add(string.Concat(dr["ServerName"], "\\", dr["InstanceName"]));
}
但是,这对listBox没有任何补充。在调试时,我发现dt.Rows.Cout实际上等于零,即使我的计算机上有一台服务器通过SQLEXPRESS 2010.任何想法?
好的,谢谢大家的帮助。以下代码最适合我:
ManagedComputer mc = new ManagedComputer();
mc.ConnectionSettings.ProviderArchitecture = ProviderArchitecture.Use64bit;
foreach (ServerInstance si in mc.ServerInstances)
{
listBox3.Items.Add(Environment.MachineName + "\\" + si.Name);
}
答案 0 :(得分:1)
来自SqlDataSourceEnumerator.Instance.GetDataSources
的文档:
检索包含有关所有可见 SQL Server 2000或SQL Server 2005实例的信息的DataTable。
答案 1 :(得分:-1)
以下方法
SqlDataSourceEnumerator.Instance.GetDataSources()
检索包含有关所有可见SQL的信息的DataTable Server 2000或SQL Server 2005实例。
在MSDN中说明。
所以我假设你的网络上既没有2000也没有2005 sql server实例。你怎么能克服这个?
最初,您必须添加对您的项目的引用,Microsoft.SqlServer.smo.dll
,其中包含您将使用的类型:
路径如下:
然后你可以得到你想要的如下:
DataTable dataTable = SmoApplication.EnumAvailableSqlServers(true);