8/29/2011

AjpdSoft Acceso nativo MySQL VB.Net código fuente Visual Basic .Net

Acceso nativo a MySQL Server con VB.Net usando el driver Connector Net



Mostramos algunas de las ventajas e inconvenientes de usar acceso nativo a motores de bases de datos desde aplicaciones Visual Basic .Net. Explicamos los requisitos necesarios para desarrollar una aplicación en Microsoft Visual Basic .Net 2010 que acceda a un servidor de MySQL Server de forma nativa, sin intermediarios (ni ODBC, ni OLE DB). Listamos el código fuente de la aplicación AjpdSoft Acceso nativo MySQL VB.Net.


Acceso nativo vs Acceso ODBC / OLE DB en MySQL

Existen varios métodos para conexión de una aplicación a un motor de bases de datos. Estos métodos pueden variar en función de muchos valores como el sistema operativo, el motor de base de datos o el lenguaje de programación usado para desarrollar la aplicación. A continuación exponemos algunas de las ventajas y desventajas de usar acceso nativo y acceso ODBC u OLE DB.

Ventajas de usar acceso nativo a motores de bases de datos

En general, usar el acceso nativo a un motor de bases de datos mejora el rendimiento, puesto que la conexión entre nuestra aplicación y el motor de base de datos es directa y no necesita de intermediarios.
Otra ventaja de usar acceso nativo, normalmente, es que se evita tener que instalar software de terceros, pues normalmente usaremos una librería proporcionada por el motor de base de datos que será la que contenga las clases o API necesaria para el acceso al motor. En cambio, si usáramos acceso ODBC u otro no nativo (OLE DB), tal vez se requiera de la instalación de software adicional. Por ejemplo, para el caso de acceso nativo a MySQL Server usando Visual Basic .Net y el driver Connector/Net, una vez compilado y generado el ejecutable de nuestra aplicación, sólo necesitará el fichero mysql.data.dll en la carpeta del ejecutable para el acceso a MySQL Server.
El acceso nativo a los motores de bases de datos suele ser muy usado para desarrollar aplicaciones con motores embebidos que no requieren de ningún tipo de instalación, de forma que el usuario realiza la descarga de nuestra aplicación y no necesita de instalaciones adicionales, es suficiente con ejecutar el fichero de la aplicación. Muchos de los motores actuales de bases de datos incluyen una versión embebida de su base de datos, que no requiere de instalación en un servidor.
Otra de las ventajas de usar acceso nativo a un motor de base de datos desde nuestra aplicación es que podemos usar todas las caracterísitcas específicas del motor, lo que aumentará las posibilidades de nuestra aplicación.

Inconvenientes de usar acceso nativo a motores de bases de datos

El principal inconveniente es que la aplicación que desarrollemos con acceso nativo al motor de base de datos, por ejemplo a MySQL, nos obligará a usar siempre ese motor de bases de datos. Nuestra aplicación no podrá usar otro motor de base de datos distinto del driver nativo usado para la conexión. Si usamos Connector/Net de MySQL Server para acceso nativo, nuestra aplicación no podrá usar otros motores como Oracle, PostgreSQL, SQLite, Access o SQL Server. Por lo tanto haremos dependiente la aplicación del motor de base de datos.
Por lo tanto perderemos la versatilidad de desarrollar una aplicación que sea independiente del motor de base de datos, por lo que restringiremos considerablemente le uso de la aplicación.

Conclusión acceso nativo vs ODBC ó OLE DB

El usar acceso nativo u otro tipo de acceso a un motor de bases de datos dependerá de las funcionalidades y características de la aplicación que queramos desarrollar, así como del uso y distribución que se le quiera dar a ésta.
Por ejemplo, si vamos a desarrollar una aplicación a medida para una empresa que siempre ha usado el motor de bases de datos MySQL Server y no hay previsión de cambio, tal vez sea recomendable usar acceso nativo, mejorando el rendimiento. En cambio, si queremos desarrollar una aplicación estándar para que sirva al mayor número de usuarios posible, para distribuirla en nuestro sitio web, sería recomendable usar acceso no nativo (ODBC, OLE DB) para hacer la aplicación independiente del motor de base de datos usado y permitir al usuario elegir el que más se ajuste as us necesidades.
En definitiva, el acceso nativo mejora el rendimiento pero limita la aplicación a un motor de base de datos concreto. Es recomendable que el desarrollador conozca a la perfección tanto los distintos métodos de conexión para el motor de base de datos elegido como las necesidades de la empresa o usuarios finales de la aplicación. Una vez adquiridos estos conocimientos podrá elegir el método que mejor se adapte a las necesidades.

Requisitos para desarrollar aplicación con acceso a MySQL nativo usando Visual Basic .Net y driver Connector/Net

A continuación indicamos los requisitos necesarios para desarrollar una aplicación, usando el IDE de desarrollo Microsoft Visual Basic .Net, que acceda de forma nativa (directa sin intermediarios) al motor de base de datos gratuito MySQL Server.
  • Suite de desarrollo Microsoft Visual Studio .Net 2010: en el siguiente enlace explicamos cómo instalar este entorno de desarrollo de aplicaciones .Net:
  • Driver Connector/Net de MySQL: necesitaremos las librerías proporcionadas por MySQL para acceso nativo desde .Net, disponibles en el sitio web oficial de MySQL, en la URL:
    http://dev.mysql.com/downloads/connector/net
    En nuestro caso descargaremos la versión 6.4.3 y la plataforma (Select Platform) ".NET & Mono":
Requisitos para desarrollar aplicación con acceso a MySQL nativo usando Visual Basic .Net y driver Connector/Net
La ventana de ".NET & Mono" es que no requiere de instalación, descargaremos un fichero comprimido que descomprimiremos:
Requisitos para desarrollar aplicación con acceso a MySQL nativo usando Visual Basic .Net y driver Connector/Net

Desarrollar aplicación VB.Net con acceso nativo a MySQL Server mediante Connector/Net

Para crear una aplicación en Microsoft Visual Basic .Net 2010 con acceso nativo a MySQL Server, pulsaremos en el menú "Archivo" - "Nuevo proyecto":
Desarrollar aplicación VB.Net con acceso nativo a MySQL Server mediante Connector/Net
En "Plantillas instaladas" desplegaremos "Visual Basic" y seleccionaremos "Windows". En la parte derecha, seleccionaremos .Net Framework 4 y "Aplicación de Windows Forms". En la parte inferior introduciremos el nombre para el nuevo proyecto VB.Net, por ejemplo "AjpdSoftAccesoNativoMySQLVB":
Desarrollar aplicación VB.Net con acceso nativo a MySQL Server mediante Connector/Net
Deberemos añadir una referencia a MySQL Connector/Net, para ello en el "Explorador de soluciones" (o bien desde el menú "Proyecto" - "Agregar referencia") pulsaremos con el botón derecho del ratón sobre la solución y seleccionaremos "Agregar referencia":
Desarrollar aplicación VB.Net con acceso nativo a MySQL Server mediante Connector/Net
Seleccionaremos la pestaña "Examinar" y buscaremos el fichero "mysql.data.dll" dentro de la carpeta "v4" de la descarga del driver Connector/Net de MySQL. Seleccionaremos el fichero "mysql.data.dll" y pulsaremos "Aceptar":
Desarrollar aplicación VB.Net con acceso nativo a MySQL Server mediante Connector/Net
Pulsando en la pestaña de ver código fuente del formulario principal (o con la tecla F7), desde el código fuente, al principio, añadiremos el siguiente import:
Imports MySQL.Data.MySqlClient
Desarrollar aplicación VB.Net con acceso nativo a MySQL Server mediante Connector/Net
Con estos pasos tendremos disponible el API para acceso nativo a MySQL Server desde Visual Basic .Net.
Añadiremos los componentes visuales y no visuales al formulario principal de la aplicación:
  • TextBox: para introducir el servidor de MySQL Server, el puerto, el usuario, la contraseña.
  • ComboBox: desplegable donde se mostrarán los esquemas o bases de datos del servidor MySQL Server al que nos hemos conectado.
  • TextBox con Multiline=True: para introducir consulta SQL que se ejecutará.
  • RadioButton: para elegir entre consulta SQL que devuelve registros (SELECT) o consulta SQL que no devuelve registros (INSERT, DELETE, UPDATE, DROP, CREATE, ALTER).
  • Button: para conectar con servidor, para abrir base de datos y para ejecutar la consulta SQL introducida.
  • DataGridView: para mostrar los registros resultantes de una consulta SQLL.
  • StatusStrip: barra de estado para mostrar algunos datos adicionales (número de tablas de la base de datos elegida, número de registros de la consulta SQL ejecutada, usuario, servidor y base de datos a la que estamos conectados.
  • ToolTip: para mostrar cuadro de ayuda rápida de los elementos del formulario.
Desarrollar aplicación VB.Net con acceso nativo a MySQL Server mediante Connector/Net
A continuación mostramos el código fuente más importante de la aplicación:
  • Por un lado declararemos una variable de tipo MySqlConnection al principio de la clase del formulario. Será la que contenga la conexión con el servidor MySQL Server y será usada en los distintos métodos que requieran de conexión:
Friend conexion As MySqlConnection
  • Función conectarServidorMySQL para conectar con un servidor MySQL Server de forma nativa, esta función usará la variable declarada al principio de la clase, llamada conexion, la inicializará con "New MySqlConnection" y establecerá los valores de conexión con "ConnectionString". Una vez establecidos realizará la conexión con el método "Open":
    Private Sub conectarServidorMySQL()         Try             conexion = New MySqlConnection()             conexion.ConnectionString =                 "server=" & txtServidor.Text & ";" &                 "user id=" & txtUsuario.Text & ";" &                 "password=" & txtContrasena.Text & ";" &                 "port=" & txtPuerto.Text & ";" &                 "database=" & lsBD.Text & ";"             conexion.Open()             If lsBD.Text <> "" Then                 bePanelNumTablas.Text = CStr(numeroTablas())             End If             bePanel2.Text = "Conectado a servidor " &                 txtServidor.Text         Catch ex As Exception             MsgBox("Error al conectar al servidor MySQL " &                    vbCrLf & vbCrLf & ex.Message,                    MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)         End Try     End Sub
  • Función numeroRegistrosConsulta que obtiene el número de registros de una consulta dada en una variable de tipo MySqlDataReader. Pasándole como parámetro un MySqlDataReader, lo recorrerá y obtendrá el número de registros:
    Private Function numeroRegistrosConsulta( _                 ByVal dr As MySqlDataReader) As Integer         Dim numeroRegistros As Integer = 0         Do While dr.Read             numeroRegistros = numeroRegistros + 1         Loop         numeroRegistrosConsulta = numeroRegistros     End Function
  • Función numeroTablas que obtiene el número de tablas de un esquema (base de datos) de MySQL Server, usando la consulta SQL "SHOW TABLES". Esta función usa la clase MySqlCommand para componer el comando SQL "SHOW TABLES" y la clase "MySqlDataReader" para guardar el resultado de la ejecución de la consulta SQL con "ExecuteReader". En el "MySqlDataReader" quedará almacenado el resultado de la consulta SQL. Para obtener el número de tablas usaremos la función anterior numeroRegistrosConsulta:
    Private Function numeroTablas() As Integer         Dim consultaSQL As MySqlCommand =             New MySqlCommand("show tables", conexion)         Dim dr As MySqlDataReader = consultaSQL.ExecuteReader()         numeroTablas = numeroRegistrosConsulta(dr)         dr.Close()     End Function
  • El botón "btConectar" tendrá el siguiente código en el evento "Click":
    Private Sub btConectar_Click(sender As System.Object,                  e As System.EventArgs) Handles btConectar.Click         conectarServidorMySQL()          Dim lista As List(Of String)         Dim i As Integer          lsBD.Items.Clear()          If lsBD.Text <> "" Then             bePanelNumTablas.Text =                 "| Nº tablas: " & CStr(numeroTablas())         End If          lista = esquemasMySQL()         For i = 0 To lista.Count - 1             lsBD.Items.Add(lista.Item(i).ToString)         Next      End Sub
  • El botón "btUsarEsquema" en su evento Click tendrá el siguiente código:
    Private Sub btUsarEsquema_Click(sender As System.Object,              e As System.EventArgs) Handles btUsarEsquema.Click         If lsBD.Text <> "" Then             Try                 If conexion.State = ConnectionState.Open Then                     conexion.Close()                 End If                  conexion.ConnectionString =                     "server=" & txtServidor.Text & ";" &                     "user id=" & txtUsuario.Text & ";" &                     "password=" & txtContrasena.Text & ";" &                     "port=" & txtPuerto.Text & ";" &                     "database=" & lsBD.Text & ";"                 conexion.Open()                 If lsBD.Text <> "" Then                     bePanelNumTablas.Text =                         "| Nº tablas: " & CStr(numeroTablas())                 End If                 bePanel2.Text = "Conectado | " &                     txtServidor.Text & "@" &                     lsBD.Text & "@" & txtUsuario.Text             Catch ex As Exception                 MsgBox("Error al conectar al servidor MySQL " &                        vbCrLf & vbCrLf & ex.Message)             End Try         Else             MsgBox("Debe seleccionar el esquema " &                    "(base de datos) a usar.",                 MsgBoxStyle.OkOnly + MsgBoxStyle.Information)             lsBD.Focus()         End If     End Sub
  • El botón "btEjecutar" tendrá el siguiente código en su evento "Click":
    Private Sub btEjecutar_Click(sender As System.Object,                 e As System.EventArgs) Handles btEjecutar.Click         Dim consultaSQL As MySqlCommand =             New MySqlCommand(txtSQL.Text, conexion)          'Consulta SQL que devuelve registros (SELECT)         If opDatos.Checked Then             Dim ds As DataSet = New DataSet()             Dim DataAdapter1 As MySqlDataAdapter =                 New MySqlDataAdapter()              Try                 DataAdapter1.SelectCommand = consultaSQL                 DataAdapter1.Fill(ds, "Tabla")                 DataGridView1.DataSource = ds                 DataGridView1.DataMember = "Tabla"                  bePanelNumRegistros.Text = "| Nº registros: " &                     CStr(ds.Tables(0).Rows.Count)             Catch ex As MySqlException                 MsgBox("Error al ejecutar consulta SQL: " &                        vbCrLf & vbCrLf & ex.ErrorCode & " " &                        ex.Message,                        MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)             End Try         End If          'Consulta SQL que no devuelve registros          '(INSERT, DELETE, UPDATE, CREATE, DROP)         If opNoDatos.Checked Then             Dim numRegistrosAfectados As Integer             Dim comandoSQL As New MySqlCommand             Try                 comandoSQL.Connection = conexion                 comandoSQL.CommandText = txtSQL.Text                 numRegistrosAfectados = comandoSQL.ExecuteNonQuery()                 bePanelNumRegistros.Text = "| Nº registros afectados: " &                     CStr(numRegistrosAfectados)                 MsgBox("Consulta SQL ejecutada correctamente en " &                      "servidor MySQL. Número de registros afectados: " &                      CInt(numRegistrosAfectados),                      MsgBoxStyle.OkOnly + MsgBoxStyle.Information)             Catch ex As MySqlException                 MsgBox("Error al ejecutar consulta SQL: " &                        vbCrLf & vbCrLf & ex.ErrorCode & " " &                        ex.Message,                        MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)             End Try         End If     End Sub
En este código mostramos cómo ejecutar una consulta que no devuelve datos (de tipo INSERT, CREATE, DROP, DELETE, UPDATE):
           Dim numRegistrosAfectados As Integer             Dim comandoSQL As New MySqlCommand             Try                 comandoSQL.Connection = conexion                 comandoSQL.CommandText = txtSQL.Text                 numRegistrosAfectados = comandoSQL.ExecuteNonQuery()                 bePanelNumRegistros.Text = "| Nº registros afectados: " &                     CStr(numRegistrosAfectados)
El código para ejecutar una consulta SQL que sí devuelve registros (SELECT) y que, además, enlazamos con un componente visual para mostrar el resultado al usuario en un DataGridView:
            Dim ds As DataSet = New DataSet()             Dim DataAdapter1 As MySqlDataAdapter =                 New MySqlDataAdapter()              Try                 DataAdapter1.SelectCommand = consultaSQL                 DataAdapter1.Fill(ds, "Tabla")                 DataGridView1.DataSource = ds                 DataGridView1.DataMember = "Tabla"

La aplicación AjpdSoft Acceso nativo MySQL VB.Net en funcionamiento

El funcionamiento de AjpdSoft Acceso nativo MySQL VB.Net es bastante sencillo, ejecutando la aplicación, introduciremos los siguientes datos:
  • Servidor: nombre de red (hostname) o dirección IP del servidor de MySQL Server.
  • Puerto: puerto de conexión con el servidor de MySQL Server, por defecto 3306.
  • Usuario: nombre de usuario de MySQL Server con permisos suficientes para las tareas que queramos realizar.
  • Contraseña: contraseña del usuario anterior.
Una vez introducidos los datos anteriores pulsaremos en el botón "Conectar con servidor" para establecer la conexión nativa con el servior de MySQL Server indicado. La aplicación obtendrá los esquemas (bases de datos) a los que tenga acceso el usuario especificado, para trabar un una base de datos la seleccionaremos en el desplegable de "Usar el esquema (BD)" y pulsaremos el botón "Usar el esquema".
Una vez conectados al servidor, introduciremos cualquier consulta SQL (INSERT, DELETE, UPDATE, CREATE, DROP, SELECT), marcaremos el check correspondiente, si la consulta devuelve registros (SELECT) se marcará "Devuelve datos" , en caso contrario se marcará "No devuelve datos". Pulsaremos el botón "Ejecutar" para enviar la consulta SQL al servidor de MySQL Server. Si la consulta devuelve registros los mostrará el el grid de abajo. Si no devuelve registros la aplicación mostrará un mensaje con el número de registros afectados por la consulta SQL:
Desarrollar aplicación VB.Net con acceso nativo a MySQL Server mediante Connector/Net

Qué se necesita en el equipo cliente para ejecutar una aplicación VB.Net con acceso nativo a MySQL Server

Para distribuir nuestra aplicación sin necesidad de instalador, en el equipo donde será ejecutada necesitaremos:
  • El ejecutable de la aplicación compilado en Visual Basic .Net.
  • El fichero mysql.data.dll descargado con el MySQL Connector/Net
  • La versión .Net Framework usada para el proyecto: podremos descargar Microsoft .Net Framework desde:
http://www.microsoft.com/downloads/es-es/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992
(la URL puede variar)
Con estos dos ficheros (ejecutable y dll) y el Microsoft .Net Framework descargado he instalado, podremos utilizar la aplicación, por ejemplo, en un equipo con Microsoft Windows XP, sin realizar ninguna instalación (salvo .Net Framework):
Qué se necesita en el equipo cliente para ejecutar una aplicación VB.Net con acceso nativo a MySQL Server

Código fuente completo aplicación AjpdSoft Acceso nativo MySQL VB.Net

A continuación mostramos el código fuente (source code) completo de la aplicación de ejemplo AjpdSoft Acceso nativo MySQL VB.Net:
Imports MySql.Data.MySqlClient   Public Class formAccesoNativoMySQL      Friend conexion As MySqlConnection      Private Function numeroRegistrosConsulta( _                 ByVal dr As MySqlDataReader) As Integer         Dim numeroRegistros As Integer = 0         Do While dr.Read             numeroRegistros = numeroRegistros + 1         Loop         numeroRegistrosConsulta = numeroRegistros     End Function      Private Function numeroTablas() As Integer         Dim consultaSQL As MySqlCommand =             New MySqlCommand("show tables", conexion)         Dim dr As MySqlDataReader = consultaSQL.ExecuteReader()         numeroTablas = numeroRegistrosConsulta(dr)         dr.Close()     End Function       Private Function esquemasMySQL() As List(Of String)         Dim listaEsquemas As List(Of String)          listaEsquemas = New List(Of String)          Dim consultaSQL As MySqlCommand =             New MySqlCommand("SHOW DATABASES", conexion)          Dim dr As MySqlDataReader = consultaSQL.ExecuteReader         Do While dr.Read             listaEsquemas.Add(dr.Item("Database"))         Loop         esquemasMySQL = listaEsquemas     End Function      Private Sub conectarServidorMySQL()         Try             conexion = New MySqlConnection()             conexion.ConnectionString =                 "server=" & txtServidor.Text & ";" &                 "user id=" & txtUsuario.Text & ";" &                 "password=" & txtContrasena.Text & ";" &                 "port=" & txtPuerto.Text & ";" &                 "database=" & lsBD.Text & ";"             conexion.Open()             If lsBD.Text <> "" Then                 bePanelNumTablas.Text = CStr(numeroTablas())             End If             bePanel2.Text = "Conectado a servidor " &                 txtServidor.Text         Catch ex As Exception             MsgBox("Error al conectar al servidor MySQL " &                    vbCrLf & vbCrLf & ex.Message,                    MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)         End Try     End Sub      Private Sub btConectar_Click(sender As System.Object,                  e As System.EventArgs) Handles btConectar.Click         conectarServidorMySQL()          Dim lista As List(Of String)         Dim i As Integer          lsBD.Items.Clear()          If lsBD.Text <> "" Then             bePanelNumTablas.Text =                 "| Nº tablas: " & CStr(numeroTablas())         End If          lista = esquemasMySQL()         For i = 0 To lista.Count - 1             lsBD.Items.Add(lista.Item(i).ToString)         Next      End Sub      Private Sub btEjecutar_Click(sender As System.Object,                 e As System.EventArgs) Handles btEjecutar.Click         Dim consultaSQL As MySqlCommand =             New MySqlCommand(txtSQL.Text, conexion)          'Consulta SQL que devuelve registros (SELECT)         If opDatos.Checked Then             Dim ds As DataSet = New DataSet()             Dim DataAdapter1 As MySqlDataAdapter =                 New MySqlDataAdapter()              Try                 DataAdapter1.SelectCommand = consultaSQL                 DataAdapter1.Fill(ds, "Tabla")                 DataGridView1.DataSource = ds                 DataGridView1.DataMember = "Tabla"                  bePanelNumRegistros.Text = "| Nº registros: " &                     CStr(ds.Tables(0).Rows.Count)             Catch ex As MySqlException                 MsgBox("Error al ejecutar consulta SQL: " &                        vbCrLf & vbCrLf & ex.ErrorCode & " " &                        ex.Message,                        MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)             End Try         End If          'Consulta SQL que no devuelve registros          '(INSERT, DELETE, UPDATE, CREATE, DROP)         If opNoDatos.Checked Then             Dim numRegistrosAfectados As Integer             Dim comandoSQL As New MySqlCommand             Try                 comandoSQL.Connection = conexion                 comandoSQL.CommandText = txtSQL.Text                 numRegistrosAfectados = comandoSQL.ExecuteNonQuery()                 bePanelNumRegistros.Text = "| Nº registros afectados: " &                     CStr(numRegistrosAfectados)                 MsgBox("Consulta SQL ejecutada correctamente en " &                      "servidor MySQL. Número de registros afectados: " &                      CInt(numRegistrosAfectados),                      MsgBoxStyle.OkOnly + MsgBoxStyle.Information)             Catch ex As MySqlException                 MsgBox("Error al ejecutar consulta SQL: " &                        vbCrLf & vbCrLf & ex.ErrorCode & " " &                        ex.Message,                        MsgBoxStyle.OkOnly + MsgBoxStyle.Critical)             End Try         End If     End Sub      Private Sub btUsarEsquema_Click(sender As System.Object,              e As System.EventArgs) Handles btUsarEsquema.Click         If lsBD.Text <> "" Then             Try                 If conexion.State = ConnectionState.Open Then                     conexion.Close()                 End If                  conexion.ConnectionString =                     "server=" & txtServidor.Text & ";" &                     "user id=" & txtUsuario.Text & ";" &                     "password=" & txtContrasena.Text & ";" &                     "port=" & txtPuerto.Text & ";" &                     "database=" & lsBD.Text & ";"                 conexion.Open()                 If lsBD.Text <> "" Then                     bePanelNumTablas.Text =                         "| Nº tablas: " & CStr(numeroTablas())                 End If                 bePanel2.Text = "Conectado | " &                     txtServidor.Text & "@" &                     lsBD.Text & "@" & txtUsuario.Text             Catch ex As Exception                 MsgBox("Error al conectar al servidor MySQL " &                        vbCrLf & vbCrLf & ex.Message)             End Try         Else             MsgBox("Debe seleccionar el esquema " &                    "(base de datos) a usar.",                 MsgBoxStyle.OkOnly + MsgBoxStyle.Information)             lsBD.Focus()         End If     End Sub End Class 

Artículos relacionados

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft.

8/26/2011

Instalar Firebird 2.5 x64 en un equipo con Microsoft Windows 7 x64



Cómo montar un servidor de bases de datos usando el motor gratuito Firebird Database Server, versión 2.5.0 de 64 bits. Expliamos cómo instalar Firebird Database Server en un equipo con Microsoft Windows 7 x64. Mostramos también cómo administrar el servidor de base de datos Firebird usando la herramienta gratuita FlameRobin.


Firebird

Firebird es un sistema de administración de bases de datos relacional (RDBMS) de código abierto, basado en la versión 6 de Interbase, cuyo código fue liberado por Borland en el año 2000. Su código fue reescrito de C a C++. El proyecto se desarrolla activamente, el 18 de abril de 2008 fue liberada la versión 2.1, el 26 de diciembre de 2009 fue liberada la versión 2.5.0 RC1 y el 24 de agosto de 2011 fue liberada la versión 2.5.1 (32 y 64 bits).
A finales de la década de 1990, Borland decidió liberar el código de Interbase. Diversos integrantes de la plantilla crearon una nueva empresa denominada IBPhoenix, y junto a otros desarrolladores independientes, crearon el fork ahora conocido como Firebird. Más tarde, Borland decidiría volver a privatizar Interbase y comercializar sus licencias. Sin embargo, Firebird sigue siendo un proyecto de código abierto bajo una licencia similar a la MPL (Mozilla Public License).

Características principales de Firebird

  • Es multiplataforma, y actualmente puede ejecutarse en los sistemas operativos: Linux, HP-UX, FreeBSD, Mac OS, Solaris y Microsoft Windows.
  • Ejecutable pequeño, con requerimientos de hardware bajos.
  • Arquitectura Cliente/Servidor sobre protocolo TCP/IP y otros (embedded).
  • Soporte de transacciones ACID y claves foráneas.
  • Es medianamente escalable.
  • Buena seguridad basada en usuarios/roles.
  • Diferentes arquitecturas, entre ellas el Servidor Embebido1 (embedded server) que permite ejecutar aplicaciones monousuario en ordenadores sin instalar el software Firebird.
  • Bases de datos de sólo lectura, para aplicaciones que corran desde dispositivos sin capacidad de escritura, como cd-roms.
  • Existencia de controladores ODBC, OLEDB, JDBC, PHP, Perl, .net, etc.
  • Requisitos de administración bajos, siendo considerada como una base de datos libre de mantenimiento, al margen de la realización de copias de seguridad.
  • Pleno soporte del estándar SQL-92, tanto de sintaxis como de tipos de datos.
  • Completo lenguaje para la escritura de disparadores y procedimientos almacenados denominado PSQL.
  • Capacidad de almacenar elementos BLOB (Binary Large OBjects).
  • Soporte de User-Defined Functions (UDFs).
  • Versión autoejecutable, sin instalación, excelente para la creación de catálogos en CD-Rom y para crear versiones de evaluación de algunas aplicaciones.

Tipos de servidor en Firebird

Existen dos tipos de servidor Firebird para ser instalados: Classic y Super server. Si bien tienen varias diferencias menores entre sí, la principal consiste en que el super server maneja hilos de ejecución individuales para cada conexión. Por lo tanto para un número reducido de conexiones el recomendado sería el Classic porque consumirá menor cantidad de recursos.
En caso de arquitecturas SMP, se debe utilizar el servidor classic porque el Supersever no tiene soporte para este tipo de arquitectura.
Los propios desarrolladores de Firebird recomiendan lo siguiente a la hora de decidirse por uno de estos servidores:
  • En plataformas Windows seleccionar el Super server.
  • En Linux simplemente elegir cualquiera, según las conexiones estimadas. En la mayoría de las situaciones no se notará diferencias en la ejecución.
Podría considerarse un tercer tipo, el Embedded. Éste consiste en una única biblioteca de enlace dinámico DLL (de unos 2 MB de tamaño) que contiene todo el servidor. De esta forma se puede tener un DBMS completo disponible y distribuíble junto con aplicaciones de usuario sin requerir que este se instale por separado.

Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64

Descargaremos el fichero de instalación de Firebird Database Server 2.5 desde la web oficial de Firebird, abriendo un navegador web y accediendo a la URL:
http://www.firebirdsql.org/en/firebird-2-5
Seleccionaremos la descarga que más se ajuste a la arquitectura y sistema operativo de nuestro equipo. En nuestro caso seleccionaremos Firebird-2.5.0.26074_1_x64.exe (Windows executable installer for full Superclassic/Classic or Superserver, recommended for firt-time users:
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
Descargaremos el fichero al equipo que será servidor de Firebird:
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
Ejecutaremos el fichero descargado, a ser posible como administradores, pulsando con el botón derecho del ratón sobre el fichero y seleccionando "Ejecutar como administrador":
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
Seleccionaremos el idioma para el asistente de instalación de Firebird y pulsaremos "Aceptar":
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
Se iniciará el asistente de instalación de Firebird Database Server 2.5.0.26074 (x64), pulsaremos "Siguiente" para continuar:
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
Leeremos los términos de licencia, si estamos de acuerdo marcaremos "Acepto el acuerdo" y pulsaremos "Siguiente":
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
El asistente para instalar Firebird Database Server 2.5.0 nos mostrará un documento guía de instalación, pulsaremos "Siguiente" para continuar:
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
Seleccionaremos la carpeta de destino de los ficheros que compondrán el servidor de Firebird, por defecto:
C:/Archivos de programa/Firebird/Firebird_2_5
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
Marcaremos la opción "Componentes del Servidor" y seleccionaremos el tipo de servidor que se instalará, las posibilidades:
  • Ejecutable Classic Server: recomendado para servidores que van a tener un número reducido de conexiones, consume menos recursos.
  • Ejecutable Super Server: recomendable para servidores que van a tener un número alto de conexiones, consume más recursos que el Classic.
Podremos instalar también las "Herramientas de desarrollo y administración", marcaremos las opciones y pulsaremos "Siguiente":
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
El asistente nos dará la posibilidad de elegir el nombre de la carpeta del Menú Inicio para los accesos directos de Firebird, por defecto "Firebird 2.5 (x64)":
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
El asistente de instalación nos dará las siguientes posibilidades:
  • Usar el Guardian para controlar el servidor: se trata de una herramienta que monitorea el estado del servicio de Firebird y, si éste cae, intentará iniciarlo. En realidad este servicio ya no es neceario pues el propio Windows 7 implementa opciones de reinicio de servicios en caso de detención, aunque Firebird recomienda dejarlo activo. En realidad la utilidad Firebird Guardian se desarrolló para sistemas operativos como Windows 98 donde no existía el concepto de "servicios", Firebird se ejecutaba como aplicación y no como servicio y Firebird Guardan se encagaba de reiniciar el servidor en caso de caída.
  • Ejecutar el servidor Firebird como aplicación o como servicio: el asistente de instalación de Firebird Database Server permite el arranque de Firebird mediante sevicio o mediante aplicación. Recomendamos mediante servicio pues es más eficiente.
  • Iniciar Firebird automáticamente cada vez que se inicie el sistema: permite que el servicio o la aplicación de Firebird se inicien de forma automática tras iniciar el equipo, es la opción recomendada.
  • Instalar el Applet del Panel de Control: permite instalar un acceso directo en el panel de control de Windows para la utilidad Firebird Server Control, desde donde podremos ver el estado ejecución de Firebird, iniciar como servicio o como aplicación, activar o desactivar Guardian y activar o desactivar inicio automático.
  • Copiar la librería cliente de Firebird al directorio del sistema: permite copiar la librería (dll) usada para conexiones cliente en la carpeta "System32" de Windows.
  • Copiar la librería cliente como GDS32.DLL para soporte de aplicaciones antiguas: permite copiar la librería del cliente con el nombre GDS32DLL para compatibilidad con aplicaciones antiguas que buscarán este fichero para la conexión con el servidor Firebird.
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
El asistente para instalar Firebird Database Server nos mostrará el resumen de las opciones elegidas, si son correctas pulsaremos "Instalar" para realizar la instalación definitiva:
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
Tras la instalación de Firebird, el asistente nos mostrará un documento con información sobre Firebird en Windows, pulsaremos "Siguiente":
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
El asistente nos indicará que ha finalizado el proceso de instalación de Firebird, si queremos que el servidor esté activo a partir de ahora marcaremos "¿Iniciar el servicio Firebird de instalación". Pulsaremos "Finalizar":
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
Si todo es correcto, en Servicios de Microsoft Windows 7 podremos ver dos servicios de Firebird:
  • Firebird Guardian - DefaultInstance: servicio de la herramienta Guardian.
  • Firebird Server - DefaultInstance: servicio propio del servidor Firebird Database Server.
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
Desde el menú Inicio de Windows podremos ver los accesos directos de Firebird, con documentación, desinstalación y la utlidad Firebird ISQL Tool para conexión y administración de bases de datos Firebird en modo comando:
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
En el Panel de control de Windows podremos ejecutar la herramienta Firebird Server Manager:
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64
Desde donde podremos ver el estado de ejecución del servidor de Firebird y configurar algunas opciones:
Instalar Firebird 2.5 x64 en Microsoft Windows 7 x64

Administrar servidor Firebird con FlameRobin en modo gráfico

Descargaremos el fichero de instalación de FlameRobin desde la URL:
http://sourceforge.net/projects/flamerobin/files/0.9.2
Administrar servidor Firebird con FlameRobin en modo gráfico
Guardaremos el archivo de instalación flamerobin-0.9.2-1-setup-x64.exe:
Administrar servidor Firebird con FlameRobin en modo gráfico
Ejecutaremos el fichero de instalación de FlameRobin pulsando con el botón derecho sobre él y seleccionando "Ejecutar como administrador":
Administrar servidor Firebird con FlameRobin en modo gráfico
Se iniciará el asistente de instalacion de FlameRobin 0.9.2 x64, pulsaremos "Next":
Administrar servidor Firebird con FlameRobin en modo gráfico
Leeremos los términos de licencia, si estamos de acuerdo marcaremos "I accept the agreement" y pulsaremos "Next":
Administrar servidor Firebird con FlameRobin en modo gráfico
El asistente nos mostrará información que debemos leer antes de continuar con la instalación de FlameRobin, pulsaremos "Next":
Administrar servidor Firebird con FlameRobin en modo gráfico
Indicaremos la carpeta de instalación de FlameRobin, por defecto:
C:/Archivos de programa/FlameRobin (x64)
Administrar servidor Firebird con FlameRobin en modo gráfico
Indicaremos el nombre de la carpeta del Menú Inicio de Windows donde se guardarán los accesos directos de FlameRobin, por defecto "Flame Robin (x64)":
Administrar servidor Firebird con FlameRobin en modo gráfico
Pulsaremos "Next" para continuar y crear los accesos directos también en el Escritorio y la barra de acceso rápido:
Administrar servidor Firebird con FlameRobin en modo gráfico
El asistente nos mostrará el resumen de las opciones seleccionadas, si son correctas pulsaremos "Install" para realizar la instalación definitiva de FlameRobin:
Administrar servidor Firebird con FlameRobin en modo gráfico
El asistente nos indicará que la instalación de FlameRobin x64 ha finalizado correctamente, marcaremos "Lauch FlameRobin" para ejecutar esta utlidad tras cerrar el asistente:
Administrar servidor Firebird con FlameRobin en modo gráfico
En el primer inicio nos indicará que no existe el fichero de configuración, pulsaremos "Aceptar":
Administrar servidor Firebird con FlameRobin en modo gráfico
Como ejemplo vamos a crear una nueva base de datos Firebird, para ello pulsaremos con el botón derecho del ratón sobre "localhost" (servidor donde tenemos instalado Firebird Database Server) y seleccionaremos "Create new database":
Administrar servidor Firebird con FlameRobin en modo gráfico
Introduciremos el nombre que se mostrará en FlameRobin para la nueva base de datos en "Display name", en "Database path" indicaremos la unidad, carpeta y nombre del ficher ode la base de datos, por ejemplo:
D:/Firebird/ajpdsoft.fdb
Indicaremos también el nombre de usuario, por defecto sysdba y la contraseña, por defecto masterkey. Pulsaremos "Create" para crear la nueva base de datos Firebird:
Administrar servidor Firebird con FlameRobin en modo gráfico
Pulsaremos con el botón derecho del ratón sobre la nueva base de datos creada, seleccionaremos "Connect" para conectarnos y administrarla:
Administrar servidor Firebird con FlameRobin en modo gráfico
Desde esta ventana podremos consultar, modificar y crear cualquier tipo de objeto en la nueva base de datos Firebird: Domains, Exceptions, Functions, Generators, Procedures, Roles, System tables, Tables, Trigger y Views.
Como ejemplo crearemos una nueva tabla, para ello pulsaremos con el botón derecho del ratón sobre "Tables" y seleccionaremos "Create new":
Administrar servidor Firebird con FlameRobin en modo gráfico
Introduciremos la consulta SQL para crear la nueva tabla, por ejemplo:
create table facturas (   numero varchar(20) not null,   fecha date,   importe float,   codigocliente integer )
una vez introducida la consulta SQL de creación de tabla, pulsaremos el botón "Execute statement" o la tecla de función F4:
Administrar servidor Firebird con FlameRobin en modo gráfico
Si la consulta se ha ejecutado correctamente, para guardar los cambios definitivamente en la base de datos Firebird pulsaremos en el botón "Commit transaction" o la tecla de función F5:
Administrar servidor Firebird con FlameRobin en modo gráfico
Una vez creada la tabla, podremos insertar registros o realizar consultas (select):
Administrar servidor Firebird con FlameRobin en modo gráfico

Artículos relacionados

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.

8/23/2011

Agregar HD a SAN, crear Array, crear unidad lógica, crear host y crear volumen


Explicamos cómo agregar nuevos discos duros a una SAN IBM DS3950. Mostramos cómo crear un nuevo Array en RAID 5 con estos nuevos discos, cómo crear una unidad lógica dentro de este Array. Indicamos cómo crear un nuevo Host en la SAN y cómo crear una unidad de disco en un equipo con Microsoft Windows Server 2008 conectado a esta SAN.


Requisitos iniciales para asignar un nuevo disco de una SAN a un equipo con Windows Server 2008

En este artículo crearemos una unidad lógica en una SAN (Storage Area Network) y la asignaremos a un equipo con Microsoft Windows Server 2008, conectado a esta SAN mediante su correspondiente tarjeta HBA.
Por lo tanto, los requisitos para poder agregar una nueva unidad de disco a un equipo servidor procedente de una SAN son:
  • Sistema Operativo: el equipo debe disponer de un sistema operativo capaz de aceptar conexiones de disco mediante HBA, tanto Linux como Windows admiten este tipo de discos conectados a SAN. En el artículo usaremos un equipo con el sistema operativo Microsoft Windows Server 2008.
  • Drivers: el sistema operativo debe disponer de los drivers (controladores) necesarios para detectar y usar la HBA y la correspondiente característica de Multipath si se disponen de varias tarjetas HBA para el mismo equipo (varios caminos, por redundancia).
  • Switch de fibra: donde irán conectados todos los latiguillos de fibra que van a los equipos servidores y a la SAN.
  • SAN: por supuesto necesitaremos una SAN, que es un dispositivo diseñado para almacenamiento de datos y acceso a través de fibra. Es una cabina de discos con sistema propio conectada al switch de fibra mediante su tarjeta HBA de forma que cualquier disco de esta SAN puede ser presentado a cualquier servidor conectado a ella mediante su canal de fibra (HBA y switch).
  • Discos duros: puesto que vamos a realizar una ampliación de discos en la SAN, en nuestro caso agregaremos cuatro nuevos discos duros, obviamente necesitaremos adquirir estos discos duros.
  • Software de administración de la SAN: para poder realizar las operaciones de administración de la SAN (crear nuevo Array de discos, crear unidad lógica, crear host, asignar unidad lógica a host) necesitaremos disponer de un equipo conectado a la misma red LAN que la SAN y con el software IBM System Storage DS Storage Manager.
En el siguiente artículo explicamos estos componentes y cómo instalar y descubrir la SAN para administrarla mediante IBM System Storage DS Storage Manager:

Recomendaciones antes de realizar el proceso

Puesto que vamos a administrar la SAN, antes de realizar este proceso deberemos realizar copia de seguridad de los datos actuales de la SAN. Si bien el proceso que realizaremos no va a suponer la pérdida de datos ni la parada del servicio, es peligroso sobre todo ante fallos humanos al administrar la SAN, por ello es recomendable realizar copia de seguridad de los datos.
Como decimos, durante todo el proceso (incluida la inserción de los discos duros en la cabina de la SAN) no habrá parada de los servicios, la SAN seguirá mostrando el resto de unidades lógicas a los servidores conectados a esta SAN. Siempre que se proceda con precaución el proceso no tiene por qué ser arriesgado.

Añadir nuevos discos duros a la cabina de la SAN IBM DS3950

En primer lugar adquiriremos los discos duros correspondientes y compatibles con la SAN de que dispongamos, en nuestro caso añadiremos cuatro discos duros de 300GB cada uno:
Añadir nuevos discos duros a la cabina de la SAN IBM DS3950
Una vez recibidos los desempaquetaremos, quitaremos las carcasas de protección en la SAN y los insertaremos en los huecos libres (no importa la posición). Este proceso se puede hacer en caliente (online) sin necesidad de detener los servicios conectados a la SAN y sin tener que apagar la propia SAN:
Añadir nuevos discos duros a la cabina de la SAN IBM DS3950
Una vez insertados los discos, desde el software de IBM System Storage DS Storage Manager podremos comprobar que la SAN los ha detectado correctamente:
Añadir nuevos discos duros a la cabina de la SAN IBM DS3950
En nuestro caso los cuatro discos duros aparecen en "blanco" con la base gris, esto indica que los ha detectado pero aún no han sido asignados a un Array:
Añadir nuevos discos duros a la cabina de la SAN IBM DS3950

Crear un nuevo Array de discos en una SAN IBM DS3950 con RAID 5

Para crear un nuevo array de discos, una vez insertados, desde la pestaña "Logical" de IBM System Storage DS Storage Manager, en "Storage Sybsystem" nos mostrará el espacio total de los nuevos discos insertados en "Total Unconfigured Capacity (1,089 TB)". Para crear un nuevo Array de discos seleccionaremos "Total Unconfigured Capacity (1,089 TB)", pulsaremos con el botón derecho y seleccionaremos "Create Array" del menú contextual:
Crear un nuevo Array de discos en una SAN IBM DS3950 con RAID 5
Se iniciará el asistente para crear un nuevo Array, nos mostrará la capacidad no configurada seleccionada, pulsaremos "Next":
Crear un nuevo Array de discos en una SAN IBM DS3950 con RAID 5
En "Array name" introduciremos el nombre descriptivo del nuevo Array (en nuestro caso "Array2"). El asistente nos mostrará dos opciones para la selección de discos:
  • Automatic (Recommended): el propio asistente nos dará las opciones recomendas de selección de discos según el RAID que seleccionemos.
  • Manual (Advanced): seleccionaremos el espacio y discos de forma manual.
En nuestro caso marcaremos "Automatic (Recommended)" y pulsaremos "Next":
Crear un nuevo Array de discos en una SAN IBM DS3950 con RAID 5
En "Select RAID level" seleccionaremos "RAID 5", el asistente nos dará varias opciones de espacio según el RAID seleccionado, con RAID 5 tendremos la posibilidad de 557GB usando tres discos (y dejando uno libre sin asignar) o bien 836GB usando los cuatro discos. En nuestro caso seleccionaremos la opción de los cuatro discos y pulsaremos "Finish":
Crear un nuevo Array de discos en una SAN IBM DS3950 con RAID 5
El asistente nos indicará que el Array se ha creado. Nos preguntará si queremos crear alguna unidad lógica en el Array creado, pulsaremos en "No" pues la creaemos más adelante:
Crear un nuevo Array de discos en una SAN IBM DS3950 con RAID 5
Con el texto: The array was succesfully created. You must create at least one logical diskDrive before you can use the capacity of the new array. Would you like to create a logical diskDrive using the new array now?
En la pestaña "Logical" podremos consultar el nuevo Array creado "Array2" (RAID 5) de 836GB. Para ver los discos duros físicos asociados a este array pulsaremos con el botón derecho sobre "Free Capacity" y seleccionaremos "View Associated Physical Components":
Crear un nuevo Array de discos en una SAN IBM DS3950 con RAID 5
Nos mostrará la ventana de View Associated Physical Components, con los discos duros correspondientes al array marcados:
Crear un nuevo Array de discos en una SAN IBM DS3950 con RAID 5

Crear unidad lógica en Array de SAN IBM DS3950

Una vez creado el Array de discos en RAID 5 accederemos a la pestaña "Logical" del software IBM System Storage DS Storage Manager, desplegaremos el Array creado (Array2), nos mostrará el espacio libre, pulsaremos sobre él y seleccionaremos en el menú contextual la opción "Create Logical Drive":
Crear unidad lógica en Array de SAN IBM DS3950
El asistente para crear una nueva unidad lógica (logical drive) se iniciará, mostrándonos el espacio libre disponible en el Array de discos seleccionados. Pulsaremos "Next" para continuar:
Crear unidad lógica en Array de SAN IBM DS3950
En "New logical diskDrive capacity" introduciremos el tamaño para la nueva unidad lógica, en nuestro caso crearemos una unidad de 400GB. Indicaremos el nombre descriptivo para la nueva unidad lógica, la usaremos para copia de seguridad de la base de datos de Oracle Database, por lo que en nuestro caso introduciremos en "Logical Drive name", por ejemplo "BackupOracle". Si somos usuarios avanzados podremos marcar la opción "Customize settings (I/O characteristics and controller ownership)", en nuestro caso, para no complicar demasiado el proceso, seleccionaremos "Use recommended settings". Pulsaremos "Next":
Crear unidad lógica en Array de SAN IBM DS3950
A continuación el asistente nos dará la posibilidad de definir el mapping (tipo y a qué host se le presentará) para la nueva unidad lógica o hacerlo más adelante. En nuestro caso marcaremos "Map later using the Mapping View" para mapear la unidad lógica más adelante. Pulsaremos "Finish" para continuar:
Crear unidad lógica en Array de SAN IBM DS3950
El asistente nos indicará que se ha creado la nueva unidad lógica y nos preguntará si queremos crear una nueva unidad, pulsaremos "No":
Crear unidad lógica en Array de SAN IBM DS3950
Con el texto: The new logical diskDrive was successfully created. Do you want to create another logical diskDrive?
El asistente nos mostrará un mensaje tras crear la unidad lógica indicando que podremos crear el mapeo de la unidad posteriormete, pulsaremos "OK":
Crear unidad lógica en Array de SAN IBM DS3950
Con el texto: Use the options in the Mappings View to view/change the current logical diskDrive-to-LUN mappings or assign hosts and LUNs to your logical drives if you are using storage partitions. If you want to change any other logical diskDrive attributes, use the appropiate options under the Logical Drive menu in the Logical/Physical View. Once you have created all desired logical drives, use the appropiate procedures (such as the hot_add utility or other method, and SMdevices) on your hosts to register the logical drives and display associated operating system-specific device names.
El asistente iniciará el proceso de inicialización de la unidad lógica creada, en segundo plano. Pulsando en la unidad lógica "BackupOracle", en la parte inferior derecha, nos mostrará el progreso de inicialización:
Crear unidad lógica en Array de SAN IBM DS3950
Una vez creada e inicializada la unidad lógica podremos consultar sus datos en el Array2 (espacio libre, ID, capacidad, etc.). En este Array también aparecerá el espacio libre disponible:
Crear unidad lógica en Array de SAN IBM DS3950

Crear nuevo host en SAN IBM DS3950 para asignar unidad lógica

Siguiendo con el proceso de creación de unidad lógica y asignación a un equipo servidor, ahora crearemos el host (servidor) en la SAN al que asignaremos la unidad lógica creada anteriormente. Obviamente, si ya tenemos el host definido no será necesario seguir este paso.
Desde la pestaña "Mappings" de IBM System Storage DS Storage Manager, pulsaremos en "Storage Subsystem DS3950" y seleccionaremos "Define" - "Host" en el menú contextual:
Crear nuevo host en SAN IBM DS3950 para asignar unidad lógica
Se iniciará el asistente para crear un nuevo host, introduciremos un nombre descritivo para el host en "Host name", por ejemplo SERVERORACLE, marcaremos "Yes" en "Do you plan to use storage partitions on this storage subsystem?". Pulsaremos "Next" para continuar:
Crear nuevo host en SAN IBM DS3950 para asignar unidad lógica
En este paso deberemos introducir el identificador de puerto o port identifier de cada una de las tarjetas HBA del equipo servidor conectadas al switch de fibra conectado a su vez a la SAN. Para ello marcaremos "Add by creating a new host port identifier", en "Alias" introduciremos un nombre descriptivo para la tarjeta HBA, por ejemplo "HBA1", pulsaremos "Add?":
Crear nuevo host en SAN IBM DS3950 para asignar unidad lógica
Una vez añadidas las HBA pulsaremos "Next":
Crear nuevo host en SAN IBM DS3950 para asignar unidad lógica
En "Host type (operating system)" seleccionaremos el sistema operativo del servidor al que presentaremos la unidad lógica, en nuestro caso "Windows 2000/Server 2003/Server 2008 Non-Clustered":
Crear nuevo host en SAN IBM DS3950 para asignar unidad lógica
En la siguiente ventana del asistente para agregar un nuevo Host, marcaremos "No - this host will NOT share access to the same logical drives with other hosts". Las posibilidades:
  • Yes - this host will share access to the same logical drives with other hosts: este host compartirá las unidades lógicas con otros hosts.
  • No - this host will NOT share access to the same logical drives with other hosts: las unidades lógicas asignadas a este host sólo serán accesibles por él.
Crear nuevo host en SAN IBM DS3950 para asignar unidad lógica
El asistente nos mostrará un resumen de las opciones seleccionadas para agregar el nuevo host a la SAN, si son correctas pulsaremos "Finish":
Crear nuevo host en SAN IBM DS3950 para asignar unidad lógica
Una vez finalizada la creación del host, el asistente nos mostrará un mensaje indicando que el proceso ha finalizado, pulsaremos "No" a la pregunta de si deseamos definir otro host:
Crear nuevo host en SAN IBM DS3950 para asignar unidad lógica
Con el texto: The new host was successfully created. Do you want to define another host?

Asociar unidad lógica a host, definir mapping, presentar unidad a host

Una vez creada la unidad lógica y creado el host en la SAN, el siguiente paso será "presentar" la unidad lógica al host para que éste la reconozca en el sistema operativo. Para ello accederemos al software IBM System Storage DS Storage Manager, accederemos a la pestaña "Mappings". En el grupo "Undefined Mappings" aparecerá la unidad lógica creada anteriormente "BackupOracle", pulsaremos sobre ella con el botón derecho del ratón, en el menú emergente seleccionaremos "Define Additional Mapping":
Asociar unidad lógica a host, definir mapping, presentar unidad a host
En "Host group or host" seleccionaremos el host creado anteriormente "Host SERVERORACLE", en "Logical unit number (LUN)" seleccionaremos un número identificativo para la unidad lógica (LUN) que no esté ya usado por otra, en nuestro caso "0". En "Logica Drive" seleccionaremos la unidad lógica creada anteriormente "BackupOracle". Pulsaremos "Add":
Asociar unidad lógica a host, definir mapping, presentar unidad a host
Tras agregar la unidad lógica al host pulsaremos en "Close" en la ventana de "Define Additional Mapping":
Asociar unidad lógica a host, definir mapping, presentar unidad a host
La unidad lógica quedará asignada al Host SERVERORACLE, junto con otras unidades lógicas:
Asociar unidad lógica a host, definir mapping, presentar unidad a host
De esta forma ya tendremos la unidad lógica preparada para ser usada por el servidor con Microsoft Windows Server 2008.

Crear nuevo volumen en equipo con Windows Server 2008 procedente de la SAN

Una vez creada la unidad lógica, creado el host en la SAN y asignada la unidad lógica al host, crearemos el volumen en el equipo con Microsoft Windows Server 2008 para que éste reconozca la nueva unidad de la SAN y pueda ser usada.
Para crear el nuevo volumen accederemos al administrador de discos desde el botón "Iniciar" - "Herramientas administrativas" - "Administrador del servidor":
Crear nuevo volumen en equipo con Windows Server 2008 procedente de la SAN
Al acceder al Administrador del servidor, si el servidor está correctamente conectado a la SAN mediante sus correspondientes tarjetas HBA, detectará automáticamente la nueva unidad lógica asignada y nos mostrará el asistente para Inicializar el disco. Marcaremos la opción "MBR (Registro de arranque maestro)" y pulsaremos "Aceptar":
Crear nuevo volumen en equipo con Windows Server 2008 procedente de la SAN
Nota: si no aparece directamente la ventana de inicialización de discos deberemos volver a examinar los discos, pulsando con el botón derecho en "Administración de discos" y seleccionando la opción del menú emergente "Volver a examinar los discos". Con esto debería aparecer la unidad lógica creada y asignada en la SAN. Si no aparece tal vez haya que reiniciar el equipo y revisar los drivers de las tarjetas HBA.
Tras inicializar el disco, pulsaremos con el botón derecho en el espacio "No asignado" y seleccionaremos "Nuevo volumen simple":
Crear nuevo volumen en equipo con Windows Server 2008 procedente de la SAN
Se iniciará el asistente para crear un nuevo volumen simple, pulsaremos "Siguiente":
Crear nuevo volumen en equipo con Windows Server 2008 procedente de la SAN
Indicaremos el tamaño del nuevo volumen, en nuestro caso usaremos todo el espacio disponible (400GB):
Crear nuevo volumen en equipo con Windows Server 2008 procedente de la SAN
Estableceremos la letra que se asignará a la nueva unidad, en nuestro caso "D":
Crear nuevo volumen en equipo con Windows Server 2008 procedente de la SAN
Si queremos que la unidad esté disponible y operativa para guardar datos deberemos formatearla. En este paso el asistente nos da la posibilidad de formatearla, marcaremos la opción "Formatear este volumen con la configuración siguiente". En "Sistema de archivos" seleccionaremos NTFS, en "Tamaño de la unidad de asignación" seleccionaremos "Predeterminado", en "Etiqueta del volumen" introduciremos un nombre descriptivo, por ejemplo "Backup Oracle". Marcaremos la opción "Dar formato rápido" y pulsaremos "Siguiente":
Crear nuevo volumen en equipo con Windows Server 2008 procedente de la SAN
El asistente para crear un nuevo volumen simple nos mostrará todas las opciones elegidas, si son correctas pulsaremos "Finalizar" para crear y formatear la nueva unidad:
Crear nuevo volumen en equipo con Windows Server 2008 procedente de la SAN
Se iniciará el formato (si no hemos marcado la opción de fomrmato rápido el proceso puede tardar unos minutos). Esperaremos a que el formato concluya:
Crear nuevo volumen en equipo con Windows Server 2008 procedente de la SAN
Una vez formateado ya podremos usar la nueva unidad de disco en el servidor con Microsoft Windows Server 2008 como si de una unidad más del equipo se tratara, aunque en realidad está alojada en la SAN:
Crear nuevo volumen en equipo con Windows Server 2008 procedente de la SAN

Artículos relacionados

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.