viernes, agosto 22, 2008

Detectar si SQL Server esta instalado en un equipo

Estoy tratando de crear un sencillo script en Asp.net, emulando la simplicidad de WordPress, para instalar un aplicacion web en cualquier equipo.

Como estoy usando SQL Server como base de datos, necesito que antes de instalar el esquema de la aplicacion en sql server, verificar que SQL server este instalado en el equipo.

Windows 2000 en adelante (XP, 2003, etc) trae en el core WMI el cual permite revisar, y hacer acciones sobre los servicios de windows.

Una herramienta muy util para esto es WMI Code Creator disponible en Microsoft, el cual me ayudo a crear la consulta destinada a descubrir los servicios del equipo.

Sin mas rollo el codigo:


Imports System
Imports System.Management
 Private Function isServerInstalled(ByVal servername As String) As Boolean


        Try
            Dim searcher As New ManagementObjectSearcher( _
                "root\CIMV2", _
                "SELECT * FROM Win32_Service WHERE Name = '" & servername.ToUpper & "'")
            If searcher.Get.Count = 0 Then
                Return False
            End If
 
            For Each queryObj As ManagementObject In searcher.Get()
                If queryObj("Name").ToString.Equals(servername.ToUpper) Then
                    Return True
                Else
                    Return False
                End If
            Next
        Catch err As ManagementException
            Return False
        End Try
    End Function

Y para usarla dentro de la pagina:




    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not (isServerInstalled("MSSQLSERVER") OrElse isServerInstalled("MSSQL$SQLEXPRESS")) Then
            Response.Redirect("nosqlserver.aspx")
        End If
    End Sub

Listo!

No hay comentarios.: