2015-08-13 2 views
1

J'ai un ancien code VB.Net que j'ai utilisé pendant des années pour récupérer des instances SQL. Cela a fonctionné parfaitement pendant un certain nombre d'années (via SQL Server 2008, 2012, maintenant 2014). Mais j'ai installé Windows 10 il y a une semaine et (c'est la première fois que j'utilise le code depuis) ​​maintenant il ne retourne aucune ligne dans la table. Et oui (j'ai lu les autres articles connexes) le service de navigation SQL est en cours d'exécution).Obtenir des instances SQL Server dans Windows 10

Le code utilisé est directement sur MSDN (où je l'origine trouvé) ...

Dim instance As SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance 
Dim table As System.Data.DataTable = instance.GetDataSources() 
DisplayData(table) 
Me.LoginName.Enabled = True 
Me.LoginPassword.Enabled = True 

Et, oui, avant que quelqu'un demande, j'ai vérifié le contenu de table en mode débogage lors de l'exécution. Les lignes count=0.

Est-ce que quelqu'un sait si c'est un problème Windows 10 et/ou avez des idées sur ce qu'il faut faire pour obtenir les instances maintenant?

Merci d'avance pour toute aide/conseil!

Répondre

0

Il semble y avoir problème avec Windows 10: https://connect.microsoft.com/VisualStudio/feedback/details/1633740/system-data-sql-sqldatasourceenumerator-doesnt-work-on-windows-10-with-net-framework-4-x

Vous pouvez appliquer une solution de contournement et lire directement les noms d'instance à partir du Registre.

RegistryKey lm= RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default); 
RegistryKey key = lm.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"); 

if(key != null){ 
    foreach (string s in key.GetValueNames()) 
    Console.WriteLine("localhost\\" + s); 
    key.Close(); 
} 

key = lm.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server\Instance Names\SQL"); 

if(key != null){ 
    foreach (string s in key.GetValueNames()) 
    Console.WriteLine("localhost\\" + s); 
    key.Close(); 
} 
lm.Close(); 
0

juste fait des tests avec EnumAvailableSqlServers dans Windows 10 Pro nouvelle Aperçu Insider Créer 10565 en utilisant une petite application C# test et il semble fonctionner maintenant. SqlDataSourceEnumerator est censé être utilisé par EnumAvailableSqlServers, donc cette méthode devrait également fonctionner maintenant.

0

Vieille question, je sais. J'ai juste rencontré le même problème et je me suis retrouvé ici.

J'ai découvert par le biais d'autres sources que vous devez activer le service SQL Server Browser. Testé avec SqlDataSourceEnumerator et ODBC32, les deux fonctionnent maintenant.