Share via


Exemplaren van SQL Server (ADO.NET) opsommen

ADO.NET downloaden

MET SQL Server kunnen toepassingen SQL Server-exemplaren vinden binnen het huidige netwerk. Deze SqlDataSourceEnumerator informatie wordt door de klasse beschikbaar gesteld aan de ontwikkelaar van de toepassing. Deze bevat informatie DataTable over alle zichtbare servers. Deze geretourneerde tabel bevat een lijst met serverexemplaren die beschikbaar zijn in het netwerk die overeenkomen met de lijst die wordt opgegeven wanneer een gebruiker probeert een nieuwe verbinding te maken en de vervolgkeuzelijst met alle beschikbare servers in het dialoogvenster Verbindingseigenschappen uitvouwt. De weergegeven resultaten zijn niet altijd voltooid.

Opmerking

Net als bij de meeste Windows-services kunt u de SQL Browser-service het beste uitvoeren met de minst mogelijke bevoegdheden. Zie SQL Server Books Online voor meer informatie over de SQL Browser-service en hoe u het gedrag ervan kunt beheren.

Een enumerator-exemplaar ophalen

Als u de tabel met informatie over de beschikbare SQL Server-exemplaren wilt ophalen, moet u eerst een enumerator ophalen met behulp van de gedeelde/statische Instance eigenschap:

System.Data.Sql.SqlDataSourceEnumerator instance =   
   System.Data.Sql.SqlDataSourceEnumerator.Instance  

Zodra u het statische exemplaar hebt opgehaald, kunt u de GetDataSources methode aanroepen, die een DataTable bevatde informatie over de beschikbare servers retourneert:

System.Data.DataTable dataTable = instance.GetDataSources();  

De tabel die wordt geretourneerd uit de methode-aanroep bevat de volgende kolommen, die allemaal waarden bevatten string :

Rubriek Description
Servernaam Naam van de server.
InstanceName Naam van de serverinstantie. Leeg als de server draait als de standaardinstantie.
IsClustered Geeft aan of de server deel uitmaakt van een cluster.
Versie Versie van de server. Voorbeeld:

- 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)

Opsommingsbeperkingen

Alle beschikbare servers worden mogelijk wel of niet vermeld. De lijst kan variƫren, afhankelijk van factoren zoals time-outs en netwerkverkeer. Dit kan ervoor zorgen dat de lijst verschilt bij twee opeenvolgende oproepen. Alleen servers in hetzelfde netwerk worden vermeld. Broadcast-pakketten gaan meestal niet door routers, daarom ziet u mogelijk geen server vermeld, maar het is stabiel bij aanroepen.

Vermelde servers kunnen al dan niet aanvullende informatie bevatten, zoals IsClustered en versie. Dit is afhankelijk van hoe de lijst is verkregen. Servers die worden vermeld via de SQL Server-browserservice, hebben meer details dan de servers die worden gevonden via de Windows-infrastructuur, waarin alleen de naam wordt vermeld.

Opmerking

Server-inventarisatie is alleen beschikbaar wanneer deze wordt uitgevoerd in volledig vertrouwen. Assemblies die worden uitgevoerd in een gedeeltelijk vertrouwde omgeving kunnen het niet gebruiken, zelfs als ze de Code Access Security (CAS) machtiging hebben.

SQL Server levert informatie voor de SqlDataSourceEnumerator via een externe Windows-service genaamd SQL Browser. Deze service is standaard ingeschakeld, maar beheerders kunnen deze uitschakelen of deactiveren, waardoor de serverexemplaar onzichtbaar is voor deze klasse.

Example

De volgende consoletoepassing haalt informatie op over alle zichtbare SQL Server-exemplaren en geeft de informatie weer in het consolevenster.

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

Volgende stappen