VB.NET - Obtendo as instâncias do SQL Server instaladas
Vamos falar um pouco do SQL Server. Quando digo SQL Server estou me referindo ao Sistema Gerenciador de Banco de dados (SGBD).
O SQL Server gerencia dois tipos de base de dados :
Durante a instalação do SQL Server são gerados quatro bancos de dados do sistema:
O SQL Server oferece os seguintes serviços:
O SQL Server pode possuir múltiplas instâncias identificadas por: nome do computador/nome da instância . Não há um limite para as instâncias , e, todas elas são independentes, como se fossem servidores diferentes.
Seria interessante podemos saber quais instâncias temos instaladas em nossa máquina. Este artigo mostra como você pode fazer isto usando código VB.NET. Vou mostrar duas maneiras resolver o problema, uma usando o VS 2003 e outra usando o VS2005.( isto não quer dizer que não existam outras.)
Obtendo as instâncias instaladas do SQL Server
1- Usando o objeto SQLDMO - (VS 2003)
Para usar este código você deve fazer uma referência ao biblioteca SQLDMO no seu projeto.
Crie um novo projeto no VS 2003 e salve com o nome de sqlInstancias. A seguir clique com o botão direito do mouse sobre o nome do projeto na janela Solution Explorer e selecione a opção Add Refernece. Na janela Add Reference marque a aba COM e selecione a library - Microsoft SQLDMO object Library, conforme abaixo:
No formulário padrão - form1.vb - inclua um botão de comando e um controle ComboBox. A seguir inclua o seguinte código no evento Click do botão de comando:
Private
Sub Button1_Click(ByVal
sender As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click
oNames = oSQLApp.ListAvailableSQLServers() For i = 1 To oNames.Count ' Inclui os nomes do servidores instalados em um combobox cboListServers.Items.Add(oNames.Item(i).ToString) Next i
End Sub |
Nota: Este código irá funcionar também no VB6 com as adaptações pertinentes. Para que o resultado seja o desejado você deverá ter instalados no mínimo o service pack - sp1- para o SQL Server 2000.
2- Acessando o registro do Windows (VB 2005)
Crie um novo projeto no VB 2005 Express Edition e no formulário padrão inclua um botão de comando e um controle Combobox.A seguir inclua o seguinte código no evento Click do botão de comando:
Dim instancias()
As
String
'obtem as instâncias do SQL Server que estão instaladas instancias = instanciasInstaladas() For Each s As String In instancias If s = "MSSQLSERVER" Then cboInstanciasSQL.Items.Add( "(MACORATI)")Else cboInstanciasSQL.Items.Add( "(local)\" & s)End If Next cboInstanciasSQL.Text = "(local)" |
Obs: MACORATI é o nome da minha máquina local.
Neste código a função instanciasInstaladas retorna as instâncias do SQL Server que estão instaladas na sua máquina local. O código da função é o seguinte:
Private
Function
instanciasInstaladas() As
String() Dim registro As Microsoft.Win32.RegistryKey registro = My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Microsoft SQL Server", False) Dim instancias() As String instancias = CType(registro.GetValue("InstalledInstances"), String()) Return instancias End Function |
A função usa o objeto My.Computer.Registry que oferece métodos e propriedades para trabalhar com chaves do registro
HKEY_LOCAL_MACHINE é usado para armazenar configurações que não variam de usuário para usuário sendo que todos os usuários do sistema Windows compartilham esta chave. Nela existem cinco sub-chaves:
O método GetValue é usado para retornar um valor da chave do registro. Na minha máquina local existem instaladas o SQL Server Express e o SQL Server 2000. O retorno das instâncias será: "SQLEXPRESS" e "MSSQLSERVER"
O resultado obtido será:
Bom estudo e até o próximo artigo VB.NET...
José Carlos Macoratti