Megosztás a következőn keresztül:


SQL Server-példányok számbavétele (ADO.NET)

ADO.NET letöltése

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

Következő lépések