有谁能告诉我如何使用c#和SMO或任何api获取远程Sqlserver实例?
我有一个远程服务器名称“RemoteMC”,它有2个sql server实例:“RemoteMc”和“RemoteMC \ sqlexpress”
我尝试在这样的代码中获取实例:
Server srv=new Server("RemoteMC");
DataTable dt=SmoApplication.EnumAvailableSqlServer(true);
但它返回“Host \ sqlexpress”
我不知道出了什么问题。我怎样才能得到结果:
RemoteMC
RemoteMC \ SQLEXPRESS;
答案 0 :(得分:6)
您正在寻找SmoApplication.EnumAvailableSqlServers
方法。有3个重载,其中一个重载了服务器名称的string
参数。
返回DataTable
,其行包含Version
,name
,IsLocal
等字段。
您需要添加对SMO库的引用,并且您可能希望在C#文件的顶部添加“using Microsoft.SqlServer.Management.Smo;
”。
有关SQL SMO的简介,请参阅http://www.sqldbatips.com/showarticle.asp?ID=34。
编辑:解决此特定问题的一些代码(我没有编译或运行此代码):
编辑 :.行添加到foreach以便可以编译。
DataTable dataTable = SmoApplication.EnumAvailableSqlServers(false);
foreach (DataRow dataRow in dataTable.Rows)
{
if ((dataRow["Server"] as string) == "MyServerName")
Console.WriteLine(dataRow["Instance"] as string);
}
答案 1 :(得分:1)
使用内置方式。
System.Data.Sql.SqlDataSourceEnumerator
答案 2 :(得分:0)
一种方法是在本地计算机下读取注册表项“”Software \ Microsoft \ Microsoft SQL Server \ Instance Names \ SQL \“。您是否可以在解决方案中阅读注册表?