2016-03-30 16 views
0

Ağımdaki tüm Oracle Sunucularını nasıl listeleyebilirim C# kullanma. Sunucu adı ve IP adresi almam gerekiyor. Bazı arama sonra SqlServer için aşağıdaki kod çalışacaktır.Ağımdaki kullanılabilir Oracle Sunucular listesini nasıl edinebilirim C# kullanma

SqlDataSourceEnumerator.Instance.GetDataSources(); 

Oracle ile aynı şeyi yapmanın bir yolu var mı?

+1

Kolayca değil. Her bir veritabanının o sunucudaki varsayılan bağlantı noktasında (1521) çalışan bir dinleyiciye sahip olduğunu varsayarsanız, her bir sunucuda 1521 numaralı bağlantı noktasına ping atabilir ve yanıt verenleri görebilirsiniz. Ad çözümlemesi için AD/Oracle Adları/OID'sini kullanırsanız, bu sunucudaki sunucuların listesini alabilirsiniz. Bir Oracle dinleyicisine benzeyen bir şeyin cevap vermediğini veya varsayılan olmayan ancak ortak bağlantı noktalarına bakıp bakmadığını görmek için diğer bağlantı noktalarına bakarak stratejiyi iyileştirebilirsiniz. –

cevap

0

.Net için Oracle'ın veri sağlayıcısına gereksinim duyacaksınız. Oracle, başlamanız için bazı çevrimiçi eğiticileri ve dokümanları here belgelemektedir.

Yükleme: (Oracle tarafından sağlanan) Oracle Data Access Components (ODAC) for Windows

örnek kod:

using System; 
using System.Data; 
using System.Data.Common; 
using Oracle.DataAccess.Client; 

class DataSourceEnumSample 
{ 
    static void Main() 
    { 
     string ProviderName = "Oracle.DataAccess.Client"; 

     DbProviderFactory factory = DbProviderFactories.GetFactory(ProviderName); 

     if (factory.CanCreateDataSourceEnumerator) 
     { 
      DbDataSourceEnumerator dsenum = factory.CreateDataSourceEnumerator(); 
      DataTable dt = dsenum.GetDataSources(); 

      // Print the first column/row entry in the DataTable 
      Console.WriteLine(dt.Columns[0] + " : " + dt.Rows[0][0]); 
      Console.WriteLine(dt.Columns[1] + " : " + dt.Rows[0][1]); 
      Console.WriteLine(dt.Columns[2] + " : " + dt.Rows[0][2]); 
      Console.WriteLine(dt.Columns[3] + " : " + dt.Rows[0][3]); 
      Console.WriteLine(dt.Columns[4] + " : " + dt.Rows[0][4]); 
     } 
     else 
      Console.Write("Data source enumeration is not supported by provider"); 
    } 
} 

geri Datatable içerir:

  • InstanceName
  • SunucuAdı
  • ServiceName
  • Protokol
  • Liman

sunucu adını edindikten sonra bunu Dns.GetHostAddresses(string hostname) üzerinden IP var bulabilirsiniz.

+0

Ama bu bir hata atıyor. "İşlem giriş noktası ons_init_wconfig_ctx, c: \ oracle \ OraOCIEI1.dll dosyasında bulunamadı." – Libin

+0

Oracle 10g ve 11g Express Sürümleri ve ODP.NET'in kullanılması, C: \ oraclexe \ app \ oracle \ product içinde kullanılabilir. 10.2.0 (10g için). Ve ben Oracle sunucu yükleme istemci bileşenleri içerir düşünüyorum.Uygulama getirme, kaydetme ve İşletim Sistemi Seviyesi Kimlik Doğrulama gibi aşağıdaki işlemleri yaparken benim uygulamada.Ve bu sunucu bulma kodu dışında çalışan her şey iyi. – Libin

İlgili konular