Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
SQL Server mengizinkan aplikasi untuk menemukan instans SQL Server dalam jaringan saat ini. Kelas SqlDataSourceEnumerator mengekspos informasi ini ke pengembang aplikasi, memberikan informasi yang DataTable berisi tentang semua server yang terlihat. Tabel yang dikembalikan ini berisi daftar instans server yang tersedia di jaringan yang cocok dengan daftar yang disediakan saat pengguna mencoba membuat koneksi baru, dan memperluas daftar drop-down yang berisi semua server yang tersedia pada kotak dialog Properti Koneksi . Hasil yang ditampilkan tidak selalu lengkap.
Nota
Seperti kebanyakan layanan Windows, yang terbaik adalah menjalankan layanan Browser SQL dengan hak istimewa yang paling tidak mungkin.
Mengambil Instansi Enumerator
Untuk mengambil tabel yang berisi informasi tentang instans SQL Server yang tersedia, Anda harus terlebih dahulu mengambil enumerator, menggunakan properti bersama/statis Instance :
Dim instance As System.Data.Sql.SqlDataSourceEnumerator = _
System.Data.Sql.SqlDataSourceEnumerator.Instance
System.Data.Sql.SqlDataSourceEnumerator instance =
System.Data.Sql.SqlDataSourceEnumerator.Instance
Setelah Anda mengambil instans statis, Anda dapat memanggil metode GetDataSources, yang mengembalikan DataTable yang berisi informasi tentang server yang tersedia.
Dim dataTable As System.Data.DataTable = instance.GetDataSources()
System.Data.DataTable dataTable = instance.GetDataSources();
Tabel yang dikembalikan dari panggilan metode berisi kolom berikut, yang semuanya berisi string nilai:
| kolom | Deskripsi |
|---|---|
| ServerName | Nama dari server. |
| InstanceName | Nama instans server. Kosong jika server berjalan sebagai instans default. |
| Teriskluster | Menunjukkan apakah server adalah bagian dari kluster. |
| Versi | Versi dari server. Contohnya: - 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) |
Batasan Pengenumerasian
Semua server yang tersedia mungkin atau mungkin tidak tercantum. Daftar dapat bervariasi tergantung pada faktor-faktor seperti batas waktu dan lalu lintas jaringan. Ini dapat menyebabkan daftar berbeda pada dua panggilan berturut-turut. Hanya server pada jaringan yang sama yang akan dicantumkan. Paket siaran biasanya tidak akan melintasi router, itulah sebabnya Anda mungkin tidak melihat server terdaftar, tetapi akan stabil di seluruh panggilan.
Server yang terdaftar mungkin atau mungkin tidak memiliki informasi tambahan seperti IsClustered dan versi. Ini tergantung pada bagaimana daftar diperoleh. Server yang tercantum melalui layanan browser SQL Server akan memiliki detail lebih lanjut daripada yang ditemukan melalui infrastruktur Windows, yang hanya akan mencantumkan nama.
Nota
Enumerasi server hanya tersedia saat berjalan dengan kepercayaan penuh. Rakitan yang berjalan di lingkungan yang tepercaya sebagian tidak akan dapat menggunakannya, bahkan jika mereka memiliki SqlClientPermission izin Keamanan Akses Kode (CAS).
SQL Server menyediakan informasi untuk SqlDataSourceEnumerator melalui penggunaan layanan Windows eksternal bernama SQL Browser. Layanan ini diaktifkan secara default, tetapi administrator dapat mematikannya atau menonaktifkannya, membuat instans server tidak terlihat oleh kelas tersebut.
Contoh
Aplikasi konsol berikut mengambil informasi tentang semua instans SQL Server yang terlihat dan menampilkan informasi di jendela konsol.
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("============================");
}
}
}