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 memungkinkan aplikasi untuk menemukan SQL Server dalam jaringan saat ini. Kelas SqlDataSourceEnumerator mengekspos informasi ini ke pengembang aplikasi, memberikan DataTable informasi yang 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.
Catatan
Seperti kebanyakan layanan Windows, yang terbaik adalah menjalankan layanan SQL Server Browser dengan hak istimewa yang paling tidak mungkin. Lihat SQL Server Books Online untuk informasi selengkapnya tentang layanan Browser SQL, dan cara mengelola perilakunya.
Mengambil instans enumerator
Untuk mengambil tabel yang berisi informasi tentang instans SQL Server yang tersedia, Anda harus terlebih dahulu mengambil enumerator, menggunakan properti bersama/statisInstance:
System.Data.Sql.SqlDataSourceEnumerator instance =
System.Data.Sql.SqlDataSourceEnumerator.Instance
Setelah Anda mengambil instans statis, Anda bisa memanggil metode GetDataSources, yang mengembalikan DataTable yang berisi informasi tentang server yang tersedia:
System.Data.DataTable dataTable = instance.GetDataSources();
Tabel yang dikembalikan dari panggilan metode berisi kolom berikut, yang semuanya berisi nilai string:
| Kolom | Deskripsi |
|---|---|
| ServerName | Nama server. |
| InstanceName | Nama instans server. Kosong jika server berjalan sebagai instans default. |
| IsClustered | Menunjukkan apakah server adalah bagian dari kluster. |
| Versi | Versi 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 enumerasi
Semua server yang tersedia mungkin atau mungkin tidak terdaftar. Daftar bisa bervariasi tergantung pada faktor-faktor seperti batas waktu dan lalu lintas jaringan. Hal ini bisa menyebabkan daftar menjadi berbeda pada dua panggilan berturut-turut. Hanya server di jaringan yang sama yang akan terdaftar. 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 itu diperoleh. Server yang terdaftar melalui layanan browser SQL Server akan memiliki lebih banyak detail daripada yang ditemukan melalui infrastruktur Windows, yang hanya akan mencantumkan namanya.
Catatan
Pencacahan server hanya tersedia saat berjalan dengan kepercayaan penuh. Rakitan yang berjalan di lingkungan yang tepercaya sebagian tidak akan bisa 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 bisa mematikannya atau menonaktifkannya, membuat instans server tidak terlihat oleh kelas ini.
Contoh
Aplikasi konsol berikut mengambil informasi tentang semua instans SQL Server yang terlihat dan menampilkan informasi di jendela konsol.
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("============================");
}
}
}