Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az SQL Server lehetővé teszi az alkalmazások számára, hogy sql server-példányokat keressenek az aktuális hálózaton belül. Az SqlDataSourceEnumerator osztály ezeket az információkat az alkalmazás fejlesztőjének teszi elérhetővé, és DataTable az összes látható kiszolgálóról tartalmaz információkat. Ez a visszaadott tábla a hálózaton elérhető kiszolgálópéldányok listáját tartalmazza, amelyek megegyeznek a felhasználó új kapcsolat létrehozásakor megadott listájával, és kibontja a Kapcsolat tulajdonságai párbeszédpanel összes elérhető kiszolgálóját tartalmazó legördülő listát. A megjelenített eredmények nem mindig teljesek.
Megjegyzés:
A legtöbb Windows-szolgáltatáshoz hasonlóan a legjobb, ha az SQL Browser szolgáltatást a lehető legkevesebb jogosultsággal futtatja.
Enumerator-példány lekérése
Az elérhető SQL Server-példányokkal kapcsolatos információkat tartalmazó tábla lekéréséhez először le kell kérnie egy enumerátort a megosztott/statikus Instance tulajdonság használatával:
Dim instance As System.Data.Sql.SqlDataSourceEnumerator = _
System.Data.Sql.SqlDataSourceEnumerator.Instance
System.Data.Sql.SqlDataSourceEnumerator instance =
System.Data.Sql.SqlDataSourceEnumerator.Instance
Miután lekérte a statikus példányt, meghívhatja a GetDataSources metódust, amely az DataTable elérhető kiszolgálókra vonatkozó információkat ad vissza:
Dim dataTable As System.Data.DataTable = instance.GetDataSources()
System.Data.DataTable dataTable = instance.GetDataSources();
A metódushívásból visszaadott tábla a következő oszlopokat tartalmazza, amelyek mindegyike értékeket tartalmaz string :
| oszlop | Leírás |
|---|---|
| Kiszolgálónév | A kiszolgáló neve. |
| InstanceName | A kiszolgálópéldány neve. Üres, ha a kiszolgáló alapértelmezett példányként fut. |
| IsClustered | Azt jelzi, hogy a kiszolgáló egy fürt része-e. |
| verzió | A kiszolgáló verziója. Például: - 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) |
Számbavételi korlátozások
Lehetséges, hogy az elérhető kiszolgálók nem mind szerepelnek a listán. A lista az olyan tényezőktől függően változhat, mint az időtúllépések és a hálózati forgalom. Ez azt eredményezheti, hogy a lista két egymást követő hívásban eltérő lehet. Csak az ugyanazon a hálózaton lévő kiszolgálók lesznek felsorolva. Az adási csomagok általában nem jutnak át az útválasztókon, ezért előfordulhat, hogy egy kiszolgáló nem látható a listán, de a hívások során stabil marad.
Előfordulhat, hogy a felsorolt kiszolgálók további információkkal( például IsClustered és verzióval) rendelkeznek. Ez a lista beszerzésének módjától függ. Az SQL Server böngészőszolgáltatáson keresztül felsorolt kiszolgálóknak több részlete lesz, mint a Windows-infrastruktúrán keresztüliaknak, amelyek csak a nevet sorolják fel.
Megjegyzés:
A kiszolgáló enumerálása csak teljes megbízhatósági kapcsolaton belül futtatva érhető el. A részben megbízható környezetben futó összeállítások akkor sem fogják tudni használni, ha rendelkeznek a SqlClientPermission Kódhozzáférési Biztonság (CAS) engedéllyel.
Az SQL Server információkat biztosít a SqlDataSourceEnumerator számára az SQL Browser nevű külső Windows-szolgáltatás használatával. Ez a szolgáltatás alapértelmezés szerint engedélyezve van, de a rendszergazdák kikapcsolhatják vagy letilthatják azt, így a kiszolgálópéldány láthatatlanná válik ebben az osztályban.
példa
Az alábbi konzolalkalmazás lekéri az összes látható SQL Server-példány adatait, és megjeleníti az adatokat a konzolablakban.
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("============================");
}
}
}