Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
SQL Server umožňuje aplikacím najít instance SQL Serveru v aktuální síti. Třída SqlDataSourceEnumerator tyto informace zveřejňuje vývojáři aplikací a poskytuje DataTable informace o všech viditelných serverech. Tato vrácená tabulka obsahuje seznam instancí serveru dostupných v síti, které odpovídají seznamu, který se zobrazí, když se uživatel pokusí vytvořit nové připojení, a rozbalí rozevírací seznam obsahující všechny dostupné servery v dialogovém okně Vlastnosti připojení . Zobrazené výsledky nejsou vždy dokončeny.
Poznámka:
Stejně jako u většiny služeb Windows je nejlepší spustit službu SQL Browser s nejnižšími možnými oprávněními. Další informace o službě SQL Browser a o správě jejího chování najdete v tématu SQL Server Books Online.
Načtení instance enumerátoru
Pokud chcete načíst tabulku obsahující informace o dostupných instancích SQL Serveru, musíte nejprve načíst enumerátor pomocí sdílené/statické Instance vlastnosti:
System.Data.Sql.SqlDataSourceEnumerator instance =
System.Data.Sql.SqlDataSourceEnumerator.Instance
Po načtení statické instance můžete volat metodu GetDataSources , která vrátí DataTable informace o dostupných serverech:
System.Data.DataTable dataTable = instance.GetDataSources();
Tabulka vrácená voláním metody obsahuje následující sloupce, z nichž všechny obsahují string hodnoty:
| Sloupec | Description |
|---|---|
| název serveru | Název serveru. |
| InstanceName | Název instance serveru. Prázdné, pokud je server spuštěný jako výchozí instance. |
| IsClustered | Určuje, jestli je server součástí clusteru. |
| Verze | Verze serveru. Například: - 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) |
Omezení výčtu
Všechny dostupné servery můžou nebo nemusí být uvedené. Seznam se může lišit v závislosti na faktorech, jako jsou časové limity a síťový provoz. To může způsobit, že se seznam u dvou po sobě jdoucích volání liší. Zobrazí se jenom servery ve stejné síti. Vysílací pakety obvykle neprocházejí směrovači, což je důvod, proč server nemusí být uveden, ale server bude stabilně dostupný ve všech hovorech.
Uvedené servery mohou nebo nemusí obsahovat další informace, jako například IsClustered a verze. To závisí na tom, jak byl seznam získán. Servery uvedené prostřednictvím služby prohlížeče SQL Serveru budou obsahovat více podrobností než ty, které se nacházejí prostřednictvím infrastruktury Systému Windows, která bude obsahovat pouze název.
Poznámka:
Výčet serveru je k dispozici pouze při spuštění v plné důvěře. Sestavení spuštěná v částečně důvěryhodném prostředí je nebudou moct používat, i když mají oprávnění Zabezpečení přístupu kódu (CAS) SqlClientPermission.
SQL Server poskytuje informace pro SqlDataSourceEnumerator pomocí externí služby Windows zvané SQL Browser. Tato služba je ve výchozím nastavení povolená, ale správci ji mohou vypnout nebo zakázat, aby instance serveru byla pro tuto třídu neviditelná.
Example
Následující konzolová aplikace načte informace o všech viditelných instancích SQL Serveru a zobrazí informace v okně konzoly.
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("============================");
}
}
}