Что не так в кластере sql2k8 ?? SMO не может получить сетевые экземпляры в кластере компьютера ...? - PullRequest
0 голосов
/ 02 ноября 2009

Я создал кластер SQL Server 2008 (TestMachine1 -> Имя компьютера). И я написал программу на c # для извлечения всех n / w экземпляров в локальной сети.

Когда я запускаю exe из TestMachine1 (где установлен SQLCluster), я не получаю экземпляры. При отладке я получаю Null для строк таблицы данных.

тот же exe, когда я запускаю из TestMachine2 (Машина в той же н / ж, но автономной машине, где есть Sql автономная установка) я получаю результат ??

Я не знаю, что не так в кластере ?? Кластер успешно установлен без ошибок и 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 ]

1 голос
/ 28 апреля 2011

Когда Ремус пытался понять, он обнаружит, что SQL установлен только локально ... в основном он использует имя локального хоста, потому что вы не дали ему имя, а под именем локального хоста кластер SQL не будет отвечать. поэтому вам нужно подключиться к виртуальному имени напрямую ... вы можете найти имя виртуального кластера в реестре ..

HKLM: \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Microsoft SQL Server \ Имена экземпляров \ SQL

если у вас установлен по умолчанию, вы увидите, что он будет что-то вроде (в зависимости от версии) MSSQL10_50.MSSQLSERVER

если вы подойдете к HKEY_LOCAL_MACHINE \ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Microsoft SQL Server

вы увидите, что есть узел, называемый этим именем экземпляра (в данном случае MSSQL10_50.MSSQLSERVER), в котором вы найдете Cluster, у которого есть ключ ClusterName ... со значением имени кластера. .

Редактировать: я только что провел тестирование в powershell ...

[System.Reflection.Assembly] :: LoadWithPartialName ("Microsoft.SqlServer.SMO") | Из-Null

microsoft.sqlserver.management.smo.smoapplication] :: enumavailablesqlservers ($ ложь)

(ps, отсутствует [выше, потому что stackoverflow странный) я получил кучу вещей, которые были в некотором роде случайными ... состояние MSDN документации

Компьютер, на котором запущен экземпляр SQL Server, может не получать ответы на метод EnumAvailableSqlServers своевременно. В возвращенном списке могут отображаться не все доступные экземпляры SQL Server в сети. При вызове метода EnumAvailableSqlServers в последующих попытках в сети может появиться больше серверов.

http://msdn.microsoft.com/en-us/library/ms210334.aspx

Я должен сказать, что, вероятно, я бы не использовал этот метод, если вы просто не пытаетесь отобразить результаты для конечных пользователей ... я бы не использовал его для поиска имени кластера.

1 голос
/ 02 ноября 2009

Экземпляр кластера будет отвечать на установленное имя виртуального ресурса, а не на узлы, составляющие кластер.

...