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. Az SQL Server Books Online-ban további információt talál az SQL Browser szolgáltatásról és annak viselkedéséről.
Enumátor 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:
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:
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 | Description |
|---|---|
| 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
Lehet, hogy az összes elérhető kiszolgáló szerepel a listán, vagy nem. 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. A közvetítési csomagok általában nem lépnek át az útválasztókon, ezért előfordulhat, hogy egy kiszolgáló nem jelenik meg a listájukon, de a hívások során stabil lesz.
Előfordulhat, hogy a felsorolt kiszolgálók további információkkal rendelkeznek, például IsClustered vagy verziószámokkal. 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 környezetben futtatva érhető el. A részben megbízható környezetben futó assembly-k akkor sem tudják majd használni, ha rendelkeznek a SqlClientPermission Code Access Security (CAS) engedéllyel.
Az SQL Server az SQL Browser nevű, külső Windows-szolgáltatás használatával ad információt a SqlDataSourceEnumerator számára. 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.
Example
Az alábbi konzolalkalmazás lekéri az összes látható SQL Server-példány adatait, és megjeleníti az adatokat a konzolablakban.
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("============================");
}
}
}