我创建了SQL Server 2008群集(TestMachine1 - >计算机名称)。我编写了一个c#程序来检索局域网中的所有n / w实例。
当我从TestMachine1(安装了SQLCluster)运行exe时,我没有得到实例。当我调试时,我得到Null到数据表行。
当我从TestMachine2运行时的同一个exe(同一个n / w中的机器,但Sql独立安装在那里的独立机器)我得到结果??
我不知道群集中的z错误?已成功安装群集而没有错误,并且还安装了sql而没有错误...
以下是代码:
DataTable dt1 = SmoApplication.EnumAvailableSqlServers(false);
Console.WriteLine("Total Rows in DataTable " + dt1.Rows.Count);
foreach (DataRow dr in dt1.Rows)
{
foreach (DataColumn dc in dt1.Columns)
{
Console.WriteLine("{0} = {1}", dc.ColumnName, dr[dc]);
}
Console.WriteLine("============================");
}
Console.Read();
对于集群设置我得到“Datatable = 0中的总行数”,而在非集群机器中,我得到“7”。是什么错误???
非常感谢任何帮助。
答案 0 :(得分:1)
群集实例将响应安装的虚拟资源名称,而不是组成群集的任何节点。
答案 1 :(得分:1)
HKLM:\ SOFTWARE \ Microsoft \ Microsoft SQL Server \ Instance Names \ SQL
如果您安装了默认设置,您会看到它会说(取决于版本)MSSQL10_50.MSSQLSERVER
如果你去 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server
你会看到有一个由该实例名称调用的节点(在本例中为MSSQL10_50.MSSQLSERVER),你会发现Cluster有一个ClusterName密钥......它有一个集群名称的值。
编辑:我刚刚在powershell中做了一些测试......
[System.Reflection.Assembly] :: LoadWithPartialName(“Microsoft.SqlServer.SMO”)|出空
microsoft.sqlserver.management.smo.smoapplication] :: enumavailablesqlservers($假)
(ps,缺少[上面因为stackoverflow很奇怪) 我得到了一堆东西,这有点随机... MSDN docs状态
运行实例SQL Server的计算机可能无法及时收到对EnumAvailableSqlServers方法的响应。返回的列表可能不会显示网络上所有可用的SQL Server实例。在后续尝试中调用EnumAvailableSqlServers方法时,可能会在网络上显示更多服务器。
http://msdn.microsoft.com/en-us/library/ms210334.aspx
我不得不说,我可能不会使用此方法,除非您只是尝试向最终用户显示结果...我不会用它来查找群集名称。