1

谁能告诉我如何使用 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;

?

4

3 回答 3

6

SmoApplication.EnumAvailableSqlServers方法是您正在寻找的。有 3 个重载,其中一个采用string服务器名称参数。

它返回 a DataTable,其行包含Version, name,IsLocal等字段。

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

有关 SQL SMO 的介绍,请参见http://www.sqldbtips.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);
}
于 2009-07-08T09:29:14.310 回答
1

使用内置方式。

System.Data.Sql.SqlDataSourceEnumerator
于 2009-07-08T13:43:39.997 回答
0

一种方法是读取本地计算机下的注册表项“Software\Microsoft\Microsoft SQL Server\Instance Names\SQL\”。您是否允许在解决方案中读取注册表?

于 2009-07-08T09:27:37.323 回答