2009-07-08 21 views
1

谁能告诉我如何使用c#和SMO或任何api获取远程Sqlserver实例?如何获取特定机器的SqlInstances列表

我有一个远程服务器名称 “RemoteMC”,其中有SQL Server的两个实例: “RemoteMc” 和 “RemoteMC \ SQLEXPRESS”

我试图让实例在这样的代码:

Server srv=new Server("RemoteMC"); 
DataTable dt=SmoApplication.EnumAvailableSqlServer(true); 

但它返回“Host \ sqlexpress”

我不知道哪里出了问题。我怎样才能得到的结果早在:

RemoteMC
RemoteMC \ SQLEXPRESS;

回答

5

SmoApplication.EnumAvailableSqlServers方法是你在找什么。有3个重载,和其中的一个需要服务器名string参数。

它返回一个DataTable其行具有领域,如VersionnameIsLocal等。

您需要添加对SMO库的引用,并且您可能希望在您的C#文件的顶部有“using Microsoft.SqlServer.Management.Smo;”。

有关SQL SMO的介绍,请参阅http://www.sqldbatips.com/showarticle.asp?ID=34

编辑:一些代码来解决这方面的问题(我还没有编译或运行此):

编辑:.Rows增加的foreach,以便它可以编译。

DataTable dataTable = SmoApplication.EnumAvailableSqlServers(false); 

foreach (DataRow dataRow in dataTable.Rows) 
{ 
    if ((dataRow["Server"] as string) == "MyServerName") 
     Console.WriteLine(dataRow["Instance"] as string); 
} 
+0

使用我得到本地SQL发现我only.How可以去远程sqlDiscovery.means我可以运行应用程序,那么它应该去指定的机器和检索信息,以我的本地machine.if我使用EnumAvailableSqlServers (true)它给予本地只有当我传递字符串,命名实例的远程只来,如果另外2多存在o远程我不会得到它们。 – Cute 2009-07-08 11:52:57

0

一种方式来做到这一点是看在本地计算机上的注册表项“”软件\微软\ Microsoft SQL Server的\实例名称\ SQL \”。你被允许阅读在你的解决方案注册表?

1

使用内置的方式。

System.Data.Sql.SqlDataSourceEnumerator 
相关问题