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("============================");
}
}
}