计算机上可以有多个sql server实例。我正在尝试识别在任何给定的REMOTE机器上运行的每个sql server引擎实例。其他问题中的所有其他答案仅适用于本地机器。
我看过SqlDataSourceEnumerator
并搜索网络,我知道要搜索的计算机。
我见过SmoApplication.EnumAvailableSqlServers
,但它需要'实例名称',这正是我正在寻找的
如何使用.net查询SQL Server实例信息的计算机?
答案 0 :(得分:1)
此博客显示如何列出计算机上安装的sql server实例using System.ServiceProcess;
我缺少的关键是ServiceController.GetService()
静态方法有一个带有字符串'servername'的重载
class InstanceInfoRetriever
{
public IEnumerable<string> GetInstanceNames(string serverName)
{
var servicenames = new[] { "MSSQL", "SQL Server" };
var services = ServiceController.GetServices(serverName);
var sqlservices = services.Where(s => servicenames.Any(n => s.ServiceName.Contains(n)));
return sqlservices.Select(s => s.ServiceName);
}
}
答案 1 :(得分:0)
尝试以下
idx = pd.Series(np.arange(6), index=list("abcdef")).compress(lambda x: x % 2 == 0).index
Index(['a', 'c', 'e'], dtype='object')
是机器名称
或尝试使用Linq
Dim dt as dataTable= SqlDataSourceEnumerator.Instance.GetDataSources()
For each dr as datarow in dt.Select("[ServerName] = '" & strServername & "'")
Msgbox(string.Concat(dr("ServerName"), "\\", dr("InstanceName"))))
NEXT