Aracılığıyla paylaş


SQL Server (ADO.NET) Numaralandırma Örnekleri

SQL Server, uygulamaların geçerli ağ içindeki SQL Server örneklerini bulmasına izin verir. sınıfı, SqlDataSourceEnumerator bu bilgileri uygulama geliştiricisinin kullanımına sunar ve DataTable tüm görünür sunucular hakkında bilgi içerir. Bu döndürülen tablo, bir kullanıcı yeni bir bağlantı oluşturmaya çalıştığında sağlanan listeyle eşleşen ve Bağlan ion Özellikleri iletişim kutusundaki kullanılabilir tüm sunucuları içeren açılan listeyi genişleten ağdaki kullanılabilir sunucu örneklerinin listesini içerir. Görüntülenen sonuçlar her zaman tamamlanmaz.

Not

Çoğu Windows hizmetinde olduğu gibi, SQL Browser hizmetini mümkün olan en düşük ayrıcalıklarla çalıştırmak en iyisidir.

Numaralandırıcı Örneği Alma

Kullanılabilir SQL Server örnekleri hakkında bilgi içeren tabloyu almak için önce paylaşılan/statik Instance özelliğini kullanarak bir numaralandırıcı almanız gerekir:

Dim instance As System.Data.Sql.SqlDataSourceEnumerator = _  
   System.Data.Sql.SqlDataSourceEnumerator.Instance  
System.Data.Sql.SqlDataSourceEnumerator instance =
   System.Data.Sql.SqlDataSourceEnumerator.Instance  

Statik örneği aldıktan sonra, kullanılabilir sunucular hakkında bir DataTable içeren bilgiler döndüren yöntemini çağırabilirsinizGetDataSources:

Dim dataTable As System.Data.DataTable = instance.GetDataSources()  
System.Data.DataTable dataTable = instance.GetDataSources();  

Yöntem çağrısından döndürülen tablo, tümü değer içeren aşağıdaki sütunları içerir string :

Sütun Açıklama
Sunucuadı sunucusunun adı.
Örnekadı Sunucu örneğinin adı. Sunucu varsayılan örnek olarak çalışıyorsa boş.
Isclustered Sunucunun bir kümenin parçası olup olmadığını gösterir.
Sürüm Sunucunun sürümü. Örneğin:

- 9.00.x (SQL Server 2005)
- 10.0.xx (SQL Server 2008)
- 10.50.x (SQL Server 2008 R2)
- 11.0.xx (SQL Server 2012)

Numaralandırma Sınırlamaları

Kullanılabilir sunucuların tümü listelenebilir veya listelenmeyebilir. Liste, zaman aşımları ve ağ trafiği gibi faktörlere bağlı olarak farklılık gösterebilir. Bu, listenin ardışık iki çağrıda farklı olmasını sağlayabilir. Yalnızca aynı ağdaki sunucular listelenir. Yayın paketleri genellikle yönlendiriciler arasında geçiş yapmaz. Bu nedenle, listelenen bir sunucuyu göremeyebilirsiniz, ancak aramalar arasında kararlı olur.

Listelenen sunucular ve sürümü gibi IsClustered ek bilgilere sahip olabilir veya olmayabilir. Bu, listenin nasıl elde edildiğine bağlıdır. SQL Server tarayıcı hizmeti aracılığıyla listelenen sunucular, Windows altyapısında bulunanlardan daha fazla ayrıntıya sahip olur ve bu da yalnızca adı listeler.

Not

Sunucu numaralandırması yalnızca tam güven içinde çalışırken kullanılabilir. Kısmen güvenilen bir ortamda çalışan derlemeler, Kod Erişim Güvenliği (CAS) iznine sahip SqlClientPermission olsalar bile bunu kullanamaz.

SQL Server, SQL Browser adlı bir dış Windows hizmeti kullanarak için bilgi SqlDataSourceEnumerator sağlar. Bu hizmet varsayılan olarak etkindir, ancak yöneticiler bu hizmeti kapatabilir veya devre dışı bırakabilir ve sunucu örneğini bu sınıf için görünmez hale getirebilir.

Örnek

Aşağıdaki konsol uygulaması, tüm görünür SQL Server örnekleri hakkındaki bilgileri alır ve konsol penceresinde görüntüler.

Imports System.Data.Sql  
  
Module Module1  
  Sub Main()  
    ' Retrieve the enumerator instance and then the data.  
    Dim instance As SqlDataSourceEnumerator = _  
     SqlDataSourceEnumerator.Instance  
    Dim table As System.Data.DataTable = instance.GetDataSources()  
  
    ' Display the contents of the table.  
    DisplayData(table)  
  
    Console.WriteLine("Press any key to continue.")  
    Console.ReadKey()  
  End Sub  
  
  Private Sub DisplayData(ByVal table As DataTable)  
    For Each row As DataRow In table.Rows  
      For Each col As DataColumn In table.Columns  
        Console.WriteLine("{0} = {1}", col.ColumnName, row(col))  
      Next  
      Console.WriteLine("============================")  
    Next  
  End Sub  
End Module  
using System.Data.Sql;  
  
class Program  
{  
  static void Main()  
  {  
    // Retrieve the enumerator instance and then the data.  
    SqlDataSourceEnumerator instance =  
      SqlDataSourceEnumerator.Instance;  
    System.Data.DataTable table = instance.GetDataSources();  
  
    // Display the contents of the table.  
    DisplayData(table);  
  
    Console.WriteLine("Press any key to continue.");  
    Console.ReadKey();  
  }  
  
  private static void DisplayData(System.Data.DataTable table)  
  {  
    foreach (System.Data.DataRow row in table.Rows)  
    {  
      foreach (System.Data.DataColumn col in table.Columns)  
      {  
        Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);  
      }  
      Console.WriteLine("============================");  
    }  
  }  
}  

Ayrıca bkz.