Click here to Skip to main content
16,017,852 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hello everyone, recently I had to create an application for Windows 10. Knowing the OS works with framework 4.6, I had to install this version for VS2013. My application works perfectly, except Class SqlDataSourceEnumerator! I had a small form and when start, it find all not hidden instances of SQL Server on the local machine and on the network ....Just in case, you have found a solution for this problem or you like to suggest another way, I'm here to follow you. Thank you.

Here my code :

Private Sub SearchSQLServerInstance()
Try
Dim listOfServers As New List(Of String)()
Dim sqlEnumerator As Sql.SqlDataSourceEnumerator = Sql.SqlDataSourceEnumerator.Instance
sqlEnumerator.GetDataSources()

Dim sqlServersTable As DataTable = sqlEnumerator.GetDataSources()

For Each rowOfData As DataRow In sqlServersTable.Rows
FrmSplashScreen.Refresh()
Dim serverName As String = rowOfData("ServerName").ToString()
Dim instanceName As String = rowOfData("InstanceName").ToString()
'check if the instance name is empty
If Not instanceName.Equals(String.Empty) Then
serverName += String.Format("\{0}", instanceName)
End If
'
listOfServers.Add(serverName & "|" & rowOfData(3).ToString)
FrmSplashScreen.Refresh()
Next
'
'
If Not listOfServers Is Nothing Then
listOfServers.Sort()
Dim i As Integer = Nothing
'
For i = 0 To listOfServers.Count - 1
FrmSplashScreen.Refresh()
Dim NomeServerSplit() As String = Split(listOfServers(i), "|")
Dim NomeServer As String = NomeServerSplit(0).ToString.TrimEnd
'
Me.ComboBoxInstance.Items.Add(NomeServerSplit(0).ToString.TrimEnd)
Me.ComboBoxVersion.Items.Add(NomeServerSplit(1).ToString.TrimEnd)
FrmSplashScreen.Refresh()
Next
End If
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Critical, "Search SQL Servers Instances")
End Try

Thank You for you attention...
Posted

1 solution

Read this thread

http://www.dotnethell.it/Forum/messages.aspx?ThreadID=47143
 
Share this answer
 
Comments
wolly77 19-Oct-15 7:19am    
that's not a solution, is the same problem without solution...
giuliana_a 19-Oct-15 14:43pm    
Exactly. The solution is that there is no solution. Wait Microsoft patch
wolly77 19-Oct-15 15:13pm    
finally I got an answer!!!
Sei stata gentile, su un altro forum tutti erano pronti a mettere energia solo per evitare che ci fosse un crossposting...Quando la rete è bella perchè ci si può confrontare con tutti e avere un parere diverso e non solo un esclusiva della soluzione (manco se avessi pagato loro)...Ovviamente non è riferito a te ma ad un altro forum che non ti faccio nome per correttezza dove avrei dovuto presentare il mio problema cambiando la semantica e la sintassi...Cioè se li avessi presi per il culo cambiando le parole erano più contenti...Cmq visto che sei italiana ti ho scritto nella lingua a noi comune...Per essere precisi al problema che ho posto, Mi sono accorto che la classe funziona sino a che si usa il framework 3.5, se si passa al 4.0 o superiore non funziona....Sul sito della microsoft ovviamente dicono che è supportata sino alla 4.6. Ho controllato sempre sul sito codeproject e ho trovato un progetto in C# fatto da un tizio dove facendolo rullare anche con il framework 4.6 funziona...Lui utilizza odbc32.dll stavo cercando di realizzarlo di Dot Net e capire se trova pure le istanze sulla rete visto che per adesso sono solo in locale...Se per caso hai da suggerirmi qualcosa per Dot Net te ne sarei grato. Buon lavoro e grazie
giuliana_a 20-Oct-15 11:12am    
Personalmente non discuto mai delle regole dei forum e le leggo prima di iscrivermi. Quando non sono d'accordo, non mi iscrivo. Detto questo, il problema può essere legato ad un bug della funzione (ci sono diverse segnalazioni sul sito connect della Microsoft e queste segnalazioni sono state passate al team di sviluppo MS). Tuttavia il metodo in questione (proprio come indicato in MSDN) è "intrinsecamente" non affidabile per diverse questioni legate alla modalità con cui si "scoprono" le istanze di SQL. Non mi affiderei totalmente al metodo stesso e, comunque, continuerei ad usare la versione "manuale" per l'inserimento del nome dell'istanza (come fatto persino nel client MS).
wolly77 21-Oct-15 5:03am    
Ma guarda sono d'accordo con quello che dici, solo non mi aspettavo le regole così rigide, un forum nasce per il confronto e lo scambio di idee e non di esclusive a mio avviso. Magari la prossima volta leggo le regole e se le ritengo stupide non mi iscrivo. Anche perchè hanno risposto con maleducazione e senza darmi la possibilità di replicare. Comportamento Mediocre oserei dire.

Tornando al mio form, la possibilità di inserirla manualmente è chiaro che lo fa, solo mi piaceva con la classe ottenere tutte le istanza non nascoste in modo da rendere al mio cliente o utente un interfaccia + intuitiva nel caso avesse avuto problemi con il collegamento al server. Tutto qui. Aspetto la patch come hai suggerito e con l'occasione volevi chiederti se per caso conosci "odbc32.dll". Se era una strada che in questo momento conveniva percorrere per trovare le istanze automaticamente, visto che il progettino in C# del tipo funziona con versioni di FrameWork 4.x. Grazie

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900