2015-08-13 3 views
1

У меня есть старый код VB.Net, который я использовал в течение многих лет, который извлекает экземпляры SQL. Он отлично работает в течение ряда лет (через SQL Server 2008, 2012, теперь 2014). Но я установил Windows 10 неделю назад и (это первый раз, когда я использовал код с тех пор), теперь он не возвращает никаких строк в таблице. И да (я прочитал другие связанные элементы) работает служба просмотра SQL).Получить экземпляры SQL Server в Windows 10

код используется непосредственно из MSDN (где я первоначально нашел) ...

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

И, да, прежде, чем кто-нибудь спросит, я проверил содержимое table в режиме отладки при исполнении. Строки count=0.

Кто-нибудь знает, если это проблема с Windows 10 и/или какие-либо мысли о том, что делать, чтобы получить экземпляры сейчас?

Заранее благодарим за помощь/совет!

ответ

0

Там, кажется, проблема с Windows 10: https://connect.microsoft.com/VisualStudio/feedback/details/1633740/system-data-sql-sqldatasourceenumerator-doesnt-work-on-windows-10-with-net-framework-4-x

Вы могли бы применить обходной путь и непосредственно читать имена экземпляра из реестра.

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

Просто сделал тесты с EnumAvailableSqlServers в Windows 10 Pro новый Insider Просмотр сборки 10565 с помощью небольшой C# тест приложение и, кажется, работает в настоящее время. Предполагается, что SqlDataSourceEnumerator будет использоваться EnumAvailableSqlServers, поэтому этот метод также должен работать.

0

Старый вопрос, я знаю. Я просто столкнулся с той же проблемой и оказался здесь.

Я узнал через другое sources, что вам нужно включить службу браузера SQL Server. Протестировано с помощью SqlDataSourceEnumerator и ODBC32, оба работают.