SqlDataSourceEnumerator.Exemple.GetDataSources() ne permet pas de localiser local instance de SQL server 2008
J'utilise le code suivant pour la liste de tous les locaux et distants les instances de SQL Server:
public static void LocateSqlInstances()
{
using( DataTable sqlSources = SqlDataSourceEnumerator.Instance.GetDataSources())
{
foreach(DataRow source in sqlSources.Rows )
{
string instanceName = source["InstanceName"].ToString();
if (!string.IsNullOrEmpty(instanceName))
{
Console.WriteLine(" Server Name:{0}", source["ServerName"]);
Console.WriteLine(" Instance Name:{0}", source["InstanceName"]);
Console.WriteLine(" Version:{0}", source["Version"]);
Console.WriteLine();
}
}
Console.ReadKey();
}
}
l'exécution du code sur ma machine locale. Le code peut trouver et liste une instance de SQL server express (version 9.0.5000) installé, mais a échoué à la liste de l'autre instance de SQL server (version 10.0.1600).
J'ai fait beaucoup de recherche sur Internet et assurez-vous que: 1-le Sql Navigateur est en cours d'exécution et 2 - le port UDP 1434 est ouvert.
Quelqu'un sait pourquoi? Merci.
OriginalL'auteur sean717 | 2011-07-26
Vous devez vous connecter pour publier un commentaire.
Vous devez sauter sur des serveurs qui ne sont pas des instances nommées. Modifier votre code:
Veuillez Noter:
SqlDataSourceEnumerator.Exemple.GetDataSources()
a des inconvénients:Plusieurs sources disent que vous devez faire 2 appels à
SqlDataSourceEnumerator.Instance.GetDataSources()
...Réf:
OriginalL'auteur Mitch Wheat
Un grand merci à Mitch pour la grande réponse qu'il met de l'ensemble. Cependant, ce que j'ai fait finalement, c'est comme le suivant:
J'ai deux méthodes distinctes pour obtenir des serveurs locaux et distants instance respectivement. Les instances locales sont extraites de la base de registre. Vous avez besoin de rechercher à la fois WOW64 et WOW3264 ruches à obtenir à la fois de SQL server 2008 (64bit) et SQL server Express (32 bits)
voici le code que j'utilise:
À la fin, je viens de fusionner l'instance distante de la liste et l'instance locale liste pour produire le résultat final.
Ce n' "FormatLocalSqlInstanceNames"? Pouvez-vous s'il vous plaît poster le code?
OriginalL'auteur sean717
Quelque chose que les Gens doivent connaître les méthodes de GetDataSources et SqlDataSourceEnumerator. Si le Nom de l'Instance est la valeur par défaut - InstanceName sera vide! [Pourquoi .. je ne sais pas, pourquoi je ne peux pas spécifier détaillé, je ne sais pas non plus mais le gars de chez MS qui l'a écrit ... arrrgh]
ServerName: Nom du serveur.
InstanceName: Nom de l'instance du serveur. Vide si le serveur est en cours d'exécution comme l'instance par défaut.
Propriétés isclustered Indique si le serveur fait partie d'un cluster.
Version Version du serveur (8.00.x pour SQL Server 2000, et à 9h00.x pour SQL Server 2005).
À PARTIR D'ICI:
https://msdn.microsoft.com/en-us/library/system.data.sql.sqldatasourceenumerator.getdatasources(v=vs. 110).aspx
OriginalL'auteur Ken
OriginalL'auteur isxaker