sql2k8集群有什么问题? SMO无法在集群机器中获取网络实例......?

时间:2009-11-02 13:48:11

标签: c# sql-server sql-server-2008 cluster-computing

我创建了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”。是什么错误???

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

群集实例将响应安装的虚拟资源名称,而不是组成群集的任何节点。

答案 1 :(得分:1)

当Remus进入时,它只会发现本地安装的SQL ...基本上它使用本地主机名,因为你没有给它起一个名字,并且在本地主机名下,SQL集群不会响应。所以你需要直接连接到虚拟名称...你可以从注册表中找到虚拟集群名称..

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

我不得不说,我可能不会使用此方法,除非您只是尝试向最终用户显示结果...我不会用它来查找群集名称。