Cap 4/ Crear Paquete de Instalación- Aplicación con Base de Datos en Red Local (LAN-MAN)- SQL Server, Visual Studio, WinForm, Capas

Introducción

Ahora crearemos el instalador o paquete de instalación de una aplicación con base de datos en Red Local. Recuerden que en este modelo la base de datos está instalada en un servidor local, y todas las aplicaciones en las computadoras cliente, obtienen los datos desde el servidor.

Este modelo principalmente se usa en aplicaciones empresariales para negocios medianos, donde tienen áreas o sucursales dentro de la misma ciudad, o la aplicación será utilizado por 2 o más computadoras.

En resumen del tutorial, para configurar un servidor de base de datos en red local, realizaremos lo siguiente:

  • Instalar SQL Server (Servidor).
  • Configurar el modo de autenticación de SQL Server a modo mixto.
  • Crear Usuario y Contraseña para la autenticación de SQL Server.
  • Asignar los roles y permisos al usuario creado.
  • Activar el protocolo TCP/IP de una Instancia de SQL Server.
  • Crear un puerto TCP para una Instancia de SQL Server.
  • Abrir el puerto TCP creado en el Firewall de Windows, para permitir la conexión a través de la red.

Para este tutorial usaré el Proyecto Login completo de C# con arquitectura en capas y su base de datos (myCompany).

En el tutorial anterior, la aplicación obtenía la conexión localmente con una instancia predeterminada (Sin nombre), mediante la autenticación de Windows.

connectionString = "Server=(local);DataBase= MyCompany; integrated security= true"

Si deseamos conectarnos a la base de datos en red local, es necesario la autenticación de SQL Server, es decir, se requiere un usuario y contraseña. En esta ocasión, crearemos un servidor de base de datos con una instancia con nombre, por ejemplo: Servidor= DBServer : Instancia= InnovaTec.

connectionString = "Server=DBServer\InnovaTec;DataBase= MyCompany; User Id= Usuario; Password=pass"

Bien, crearemos el servidor de base de datos con los parámetros indicados, esto es totalmente opcional, puedes realizar el tutorial en tu instalación de SQL Server que ya tienes en tu PC, dirígete al PASO 4 (Activar la Autenticación de SQL en Modo Mixto). Yo lo haré de esta manera para demostrar una instalación real y desde cero.

Instalar y Configurar Servidor de Base de Datos SQL Server para Red Local

1.- Preparar PC Servidor (Opcional)

Primeramente cambiaré el nombre de equipo (PC)  a DBServer, como indiqué en la cadena de conexión, puedes colocar el nombre que desees.

2.- Instalar SQL Server (Opcional)

  • Como dije, en esta ocasión instalaremos SQL Server con una instancia con nombre (InnovaTec), como indiqué en la cadena de conexión. Puedes instalar una instancia predeterminada, además sería lo recomendable, porque ya dispone un puerto por defecto (1433).
  • En modo de autenticación, lo ideal sería colocar modo mixto, ya que para conectarse a SQL Server a través de la red, es necesario la autenticación de SQL Server mediante un usuario y contraseña. Sin embargo, elegiré modo de autenticación de Windows, ya que la mayoría tiene instalado SQL Server en este modo. Por ello, cambiaremos el modo de autenticación después de la instalación.

3.- Crear Base de Datos

Una vez terminado la instalación, abrimos SQL Server, nos conectamos como normalmente lo hacemos, y creamos la base de datos de la aplicación ya sea ejecutando el script de un archivo SQL (MyDataBase.sql) o restaurando una copia de seguridad (MyDataBase.bak).

4.- Configurar el modo de autenticación de SQL Server a modo mixto

  • Abrimos las propiedades de la instancia de SQL Server.
  • Seleccionamos seguridad.
  • Elegimos la opción modo de autenticación de Windows y SQL Server.
  • Para aplicar los cambios, debemos reiniciar SQL Server (el servicio, no el programa).
    • Abrimos los servicios del sistema (Windows).
    • Buscamos los servicios de SQL Server.
    • Reiniciamos.
  • Abrimos y nos conectamos nuevamente a SQL Server

5.- Crear Usuario y Contraseña para la autenticación de SQL Server

  • Desglosamos el directorio seguridad
  • Abrimos inicio de sesión.

Por defecto están los usuarios para conectarse mediante servicios y el usuario SA, significa administrador de sistema, también conocido como Súper Administrador; este es un usuario predeterminado que se crea con la instalación de SQL Server y tiene todos los permisos, es decir, este usuario no tiene restricciones. Por lo tanto, jamás use el usuario SA en su aplicación para conectarse a la base de datos. Si un atacante logra descompilar la aplicación (obtener el código fuente), entonces podrá obtener el usuario y la contraseña desde la cadena de conexión, el atacante tendría  acceso total como administrador del sistema del motor de base de datos. Por lo tanto, es recomendable crear un usuario con privilegios limitados.

  • Agregamos un nuevo nombre de inicio de sesión (clic derecho sobre inicios de session).
  • Colocamos un nombre de usuario, por ejemplo, acceso a la aplicación (AppAccess).
  • Elegimos autenticación de SQL Server.
  • Creamos una contraseña.
  • Finalmente clic en aceptar.

6.- Asignar Base de Datos, Roles y Permisos a usuario SQL Server

Una vez creado el usuario y contraseña, ahora asignemos los roles y permisos de usuario, para ello, nos dirigimos a las propiedades del usuario.

  • En asignación de usuarios. Indicamos que el usuario solamente tenga acceso a la base de datos que usará la aplicación. En este caso la base de datos MyCompany.
  • Asignamos los roles para la base de datos, indicamos que el usuario solamente puede realizar copias de seguridad, leer y escribir en la base de datos.
  • Ahora probemos conectarnos con el usuario y la contraseña creada, comprueba que los roles asignados estén funcionando correctamente (Ejecuta consultar de Leer, Insertar, Editar y Eliminar).

7.-  Habilitar Protocolo TCP/IP de SQL Server

  • Abrimos el administrador de configuración de SQL Server (En el menú Inicio, elija Todos los programas, Microsoft SQL Server 20XX, Herramientas de configuración y, por último, Administrador de configuración de SQL Server.)
  • Expandimos configuración de red de SQL Server.
  • En la lista de protocolos, seleccione la instancia de SQL Server que deseas configurar, en este caso InnovaTec (Instancia con nombre). Una instancia predeterminada (una instancia sin nombre) aparece como MSSQLSERVER o SQLEXPRESS.
  • Habilitar protocolo TCP/IP: Haga clic con el botón derecho sobre el protocolo TCP/IP) y luego haga clic en Habilitar.
  • Para aplicar los cambios es necesario reiniciar SQL Server, pero reiniciaremos después de crear un puerto TCP.

8.- Crear Puerto TCP/IP de SQL Server

Si usas una instancia predeterminada (instancia sin nombre) no es necesario crear un puerto fijo, ya que este ya dispone el puerto 1433.

  • En Protocolos de InnovaTec o tu instancia X, haga doble clic en TCP/IP.
  • En el cuadro de diálogo Propiedades de TCP/IP, haga clic en la pestaña Direcciones IP.
  • En el cuadro Puerto TCP de la sección IPAll, escriba un número de puerto disponible. Para este tutorial utilizaré 49500.
  • Haga clic en Aceptar, para guardar los cambios debe reiniciarse el servicio de SQL Server. Puedes hacerlo desde los servicios de Windows o el administrador de configuración de SQL Server, realizando lo siguiente:
    • En el panel izquierdo, haga clic en Servicios de SQL Server.
    • Haga clic con el botón derecho en la instancia de SQL Server, luego haga clic en Reiniciar.

9.- Abrir puerto en firewall

  • Abrimos Firewall de Windows.
  • Creamos una nueva regla de entrada
  • Elegimos puerto.
  • Marcamos TCP, y colocamos el puerto TCP creado para la instancia de  SQL Server, en este caso 49500, o 1433 si usas la instancia predeterminada
  • Permitimos la conexión.
  • Finalmente Colocamos un nombre y aceptar.
  • Probemos si la configuración funciona: indicamos que nos conectaremos mediante el protocolo TCP.

Eso es todo, ahora podemos crear el instalador e instalar la aplicación en todas las computadoras en red.

10.- Cadena de conexión en la aplicación.

Implementamos/ Modificamos la cadena de conexión de la aplicación con los parámetros creados en el servidor de base de datos.

connectionString = "Server=DBServer\InnovaTec,49500;DataBase= MyCompany; User Id= AppAccess; Password=admin123"

11.- Crear Instalador (Setup) de la aplicación- ClickOnce Visual Studio

Una vez creado la cadena de conexión, nos dirigimos a las propiedades del proyecto principal de Visual Studio (En este caso capa de presentación).

  • En Pestaña Aplicación: Cambiemos el nombre del ensamblado, por ejemplo AppLoginLocalDBLocal (puedes colocar el nombre que desees para el ejecutable de tu aplicación). Agrega un icono (Debe tener extensión .ico), puedes añadir información al ensamblado.
  • En Pestaña Publicar: Elegimos la ubicación donde se publicará el paquete de instalación. Verificamos que todas las librerías y archivos estén incluidas en el paquete.
  • Finalmente, seleccionamos publicar ahora, para crear el instalador de la aplicación.

12.- Instalar Aplicación

Instala aplicación en todas las computadoras, importante: Las computadoras cliente deben estar en mismo rango de direcciones IP.

Ver Video Tutorial

Ver Proyecto Login usado en el tutorial.

C#

VB.Net