Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
SQL Server tillåter program att hitta SQL Server-instanser i det aktuella nätverket. Klassen SqlDataSourceEnumerator exponerar den här informationen för programutvecklaren och tillhandahåller en DataTable innehållande information om alla synliga servrar. Den här returnerade tabellen innehåller en lista över tillgängliga serverinstanser i nätverket som matchar listan som angavs när en användare försöker skapa en ny anslutning och expanderar listrutan som innehåller alla tillgängliga servrar i dialogrutan Anslutningsegenskaper . De resultat som visas är inte alltid fullständiga.
Anmärkning
Precis som med de flesta Windows-tjänster är det bäst att köra SQL Browser-tjänsten med minsta möjliga behörighet. Mer information om SQL Browser-tjänsten och hur du hanterar dess beteende finns i SQL Server Books Online.
Hämtar en uppräkningsinstans
För att kunna hämta tabellen som innehåller information om tillgängliga SQL Server-instanser måste du först hämta en uppräknare med hjälp av den delade/statiska Instance egenskapen:
System.Data.Sql.SqlDataSourceEnumerator instance =
System.Data.Sql.SqlDataSourceEnumerator.Instance
När du har hämtat den statiska instansen GetDataSources kan du anropa metoden som returnerar en DataTable innehållande information om de tillgängliga servrarna:
System.Data.DataTable dataTable = instance.GetDataSources();
Tabellen som returneras från metodanropet innehåller följande kolumner, som alla innehåller string värden:
| Kolumn | Description |
|---|---|
| ServerName | Namnet på servern. |
| InstanceName | Namnet på serverinstansen. Tomt om servern körs som standardinstans. |
| IsClustered | Anger om servern är en del av ett kluster. |
| Version: | Serverns version. Till exempel: – 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) |
Uppräkningsbegränsningar
Alla tillgängliga servrar kanske inte visas. Listan kan variera beroende på faktorer som tidsgränser och nätverkstrafik. Detta kan göra att listan skiljer sig åt vid två efterföljande anrop. Endast servrar i samma nätverk visas. Sändningspaket går vanligtvis inte igenom routrar, vilket är anledningen till att du kanske inte ser en server i listan, men det blir stabilt mellan anrop.
Servrar som visas kanske eller kanske inte har ytterligare information, till exempel IsClustered och version. Detta beror på hur listan hämtades. Servrar som listas via SQL Server-webbläsartjänsten har mer information än de som hittas via Windows-infrastrukturen, som endast visar namnet.
Anmärkning
Serveruppräkning är endast tillgängligt när den körs med fullständigt förtroende. Sammansättningar som körs i en delvis betrodd miljö kan inte använda den, även om de har behörigheten SqlClientPermission Code Access Security (CAS).
SQL Server innehåller information om SqlDataSourceEnumerator hur du använder en extern Windows-tjänst med namnet SQL Browser. Den här tjänsten är aktiverad som standard, men administratörer kan stänga av eller inaktivera den, vilket gör serverinstansen osynlig för den här klassen.
Example
Följande konsolprogram hämtar information om alla synliga SQL Server-instanser och visar informationen i konsolfönstret.
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("============================");
}
}
}