2009-11-02 35 views
0

我已經創建了SQL Server 2008羣集(TestMachine1 - >計算機名稱)。我寫了一個c#程序來檢索lan中的所有n/w實例。sql2k8集羣有什麼問題? SMO無法在羣集機器中獲取網絡實例...?

當我從TestMachine1(安裝SQLCluster)運行exe時,我沒有收到instances.when我調試我得到Null到數據表的行。

當我從TestMachine2(機器在相同的n/w,但獨立的機器,其中Sql獨立安裝在那裏)運行相同的exe我得到的結果??

我不知道集羣中有什麼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」。有什麼問題?

任何幫助都非常感謝。

回答

1

集羣實例將響應安裝的虛擬資源名稱,而不是組成集羣的任何節點上。

+0

Yah.But在網絡中必須顯示基於他的代碼的細節?但它什麼都不給 – Cute

+0

您的防火牆可能會阻止UDP實例名稱發現數據包,請參閱http://blogs.msdn.com/sql_protocols/archive/2006/02/27/unable-to-connect-to-a-sql-server -named-instance-on-a-cluster.aspx –

+0

我也關閉了防火牆,然後所有的端口都打開了嗎? – Cute

1

隨着Remus的進展,它將只能在本地安裝SQL ...基本上它使用本地主機名稱,因爲您沒有給它一個名稱,並且在本地主機名下,SQL羣集不會響應。所以你需要直接連接到虛擬名稱...你可以從註冊表中找到虛擬羣集名稱..

HKLM:\ SOFTWARE \微軟\ Microsoft SQL Server的\實例名稱\ SQL

,如果你已安裝的默認,你會看到它會說一些(根據版本)MSSQL10_50.MSSQLSERVER

,如果你去到 HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\ Microsoft SQL Server的像

你會看到那裏有一個由該實例名稱(在本例中爲MSSQL10_50.MSSQLSERVER)調用的節點你會發現羣集具有集羣名稱鍵......它具有羣集名稱的值...

編輯:我只是做在PowerShell中一些測試...

[System.Reflection.Assembly ] :: LoadWithPartialName(「Microsoft.SqlServer.SMO」)|外空

microsoft.sqlserver.management.smo.smoapplication] :: enumavailablesqlservers($假)

(PS,失蹤[以上,因爲計算器正在奇怪) 我得到了一堆東西,這是隨機排序...... MSDN文檔狀態

運行實例SQL Server的計算機可能無法及時收到對EnumAvailableSqlServers方法的響應。返回的列表可能不會顯示網絡上所有可用的SQL Server實例。在隨後的嘗試中調用EnumAvailableSqlServers方法時,網絡上可能會顯示更多服務器。

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

我不得不說,我大概難道不使用這種方法,除非你只是想顯示的結果爲最終用戶...我wouldnt使用它來找到一個羣集名稱。