Como listar as instancias do SQLServer

09/02/2012

0

galera, estou com um probleminha pra listar as instancias do SQL na rede, exemplo: no próprio wizard de conexão com o banco de dados no VBNET quando vamos add um dataset temos um browse onde quando fazemos o dropdown do combobox ele ja nos lista todos os SQL servers da rede, queria fazer isso pra minha aplicação, tentei o seguinte codigo mas o nome da instancia fica em branco, se alguem puder ajudar agradeço

Dim dtServers As DataTable = SqlDataSourceEnumerator.Instance.GetDataSources


With DataGridView1
.DataSource = dtServers

com esse metodo consigo listar apenas as tabelas mas nao as linhas que contem o nome da instancia.

abs
Fernando Borstmann

Fernando Borstmann

Responder

Posts

09/02/2012

Joel Rodrigues

Rapaz, fiz isso aqui em C# e funcionou legal:
-------------------------------------------------------------------
SqlDataSourceEnumerator servers = SqlDataSourceEnumerator.Instance;
edtServidor.DataSource = servers.GetDataSources();
-------------------------------------------------------------------
Responder

09/02/2012

Fernando Borstmann

eu coloquei exatamente esse mesmo codigo no form mas mesmo assim o grid continua mostrando apenas as colunas que retornam dessa colection : servername, instancename, isclustered e version, porém as linhas voltam vazias, sem os dados das instancias que tenho na rede, hoje tenho 3 SQL server´s rodando aqui, tem alguma outra classe que tenha que importar pra isso acontecer? to apenas fazendo o imports/using System.Data.SQL
valeu!
Responder

09/02/2012

Joel Rodrigues

Os servidores são listados normalmente no Management Studio? E você consegue abrir uma conexão com qualquer um desses servidores manualmente (usando o SqlConnection)?
Responder

09/02/2012

Fernando Borstmann

sim, todos aparecem no SSMS normalmente, e eu tenho aplicações rodando e acessando todos eles, estranho isso, pois tentei colocar esse código numa aplicação do meu Notebook de desenvolvimento e ele não lista nem mesmo o SQL que esta local no note, ou seja não é um problema de firewall de rede ou coisas assim, eis a dúvida do que seja agora rss
Responder

09/02/2012

Fernando Borstmann

sim, todos aparecem no SSMS normalmente, e eu tenho aplicações rodando e acessando todos eles, estranho isso, pois tentei colocar esse código numa aplicação do meu Notebook de desenvolvimento e ele não lista nem mesmo o SQL que esta local no note, ou seja não é um problema de firewall de rede ou coisas assim, eis a dúvida do que seja agora rss
Responder

09/02/2012

Joel Rodrigues

Qual a versão do SQL Server e qual a versão do .NET?
Dá uma olhada nesse conteúdo, lá fala sobre alguns motivos pelos quais os servidores podem não ser listados.
Responder

10/02/2012

Fernando Borstmann

depois de algum trabalho e pesquisa consegui fazer, agradeço a atenção e auxilio
Responder

13/02/2012

Joel Rodrigues

Opa, poderia dizer qual era o problema e como resolveu?
Grato.
Responder

14/02/2012

Fernando Borstmann

claro, segue o código:

-- Estabelece Locals
Dim results As DataTable
Dim ret As New List(Of String)

-- Mostrar mensagem no ListView para aguardar
Me.ListView1.Items.Add(Carregando Lista. Aguarde...)
Me.ListView1.ForeColor = Color.Gray
Me.ListView1.Refresh()

-- Tenta buscar servers disponíveis na rede
results = SqlDataSourceEnumerator.Instance.GetDataSources()

-- Limpar ListView
Me.ListView1.Items.Clear()
Me.ListView1.ForeColor = Color.Black

-- Coloca o resultado numa lista e num ListView
For Each r As DataRow In results.Rows
-- Determina o nome da Instância
If Not r.IsNull(InstanceName) Then
ret.Add(CType(r.Item(ServerName), String) & \ & CType(r.Item(InstanceName), String))
Me.ListView1.Items.Add(CType(r.Item(ServerName), String) & \ & CType(r.Item(InstanceName), String))
Else
ret.Add(CType(r.Item(ServerName), String))
Me.ListView1.Items.Add(CType(r.Item(ServerName), String))
End If
Next
End Sub
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar