miércoles, 24 de agosto de 2016

¿Cómo serializar una base SQL de Azure con Visual Studio?

Este artículo indica cómo podemos serializar una base de datos de SQL Server que se encuentra en Azure con Visual Studio y sus ventajas. Se complementa con el documento: Cómo serializar una base SQL con Visual Studio  

Para serializar una base SQL que se encuentra en Azure con Visual Studio hay algunos pasos extras que deberemos realizar. Éstos, se centran en asegurar la conexión desde nuestra máquina local a Azure. 

Deberemos:

1. Azure: abrir un puerto desde el portal de administración de Azure
2. Azure: habilitar el acceso a través del Firewall
3. SQL Server Azure: verificar que el protocolo TCP está habilitado
4. SQL Server Azure: configurar usuario
5. Visual Studio local: conectar remotamente a SQL Azure

1. Azure: abrir un puerto desde el portal de administración de Azure

Para poder abrir un puerto desde la máquina virtual de Azure debemos crear un "endpoint",  concepto utilizado para dirigir y controlar el tráfico de ingreso a la máquina virtual.
Luego, ingresamos a nuestra máquina virtual Azure, dentro de la consola de administración de Windows Azure,seleccionamos la "Virtual Machine" en la cual estableceremos el endpoint y hacemos clic en el item: "ENDPOINTS".


Allí vemos que ya hay dos endpoints previamente creados. Uno es para el funcionamiento de PowerShell y el otro es para permitir el acceso remoto. Su generación fue automática cuando creamos la máquina virtual. Para agregar nuestro endpoint hacemos clic en Add:


Se abrirá la siguiente ventana en la cual confirmaremos que queremos crear un endpoint de tipo "stand-alone". La opción “Add an endpoint to an existing load-balanced set” no es relevante para nuestro objetivo: establecer una conexión desde una máquina local a un servidor SQL Azure.


En nuestro caso, tanto en el campo PUBLIC PORT como en PRIVATE PORT deberemos ingresar el puerto correspondiente. 

Nota importante: es aconsejable no utilizar el puerto default (1433). Sin embargo, haremos uso del mismo sólo por motivos educativos. Entonces ingresamos un nombre para el endpoint; seteamos el protocolo TCP y por último completamos los números de puertos:


Con esto, damos por finalizada la creación del endpoint.

2. Azure: habilitar el acceso a través del Firewall

A continuación, le indicaremos a Windows que queremos dejar pasar el tráfico proveniente de ese puerto que acabamos de habilitar. Para acceder a la configuración del firewall podemos presionar las teclas: Windows + R Y escribimos wf.msc. De esa manera se nos abre la siguiente ventana. Seleccionamos la sección Inbound Rules y luego hacemos clic en el botón New rule:


Hacemos clic en Siguiente o Next y seleccionamos la opción Port:


En la próxima ventana elegimos las opciones TCP y "Specific local ports:", en este último ingresamos el puerto 1433 según nuestro ejemplo.



Acto seguido, nos consulta qué tipo de acción queremos que ejecute el Firewall. Queremos que permita el tráfico así que seleccionamos: Allow the connection:


A continuación nos pregunta el alcance de la regla, dejamos las opciones tildadas por default y vamos a la próxima ventana.


Finalmente, le damos un nombre a nuestra regla y opcionalmente una descripción:


Cuando estamos listos, hacemos clic en Finish.

Verificamos que se haya creado la regla:


3. SQL Server Azure: verificar que el protocolo TCP está habilitado

Es bueno verificar que nuestro servidor SQL tenga habilitado el protocolo TCP, ¡nos ahorrá más de un dolor de cabeza! Para ello abrimos el SQL Server Configuration Manager y en la sección SQL Server Network Configuration verificamos que el protocolo TCP esté habilitado (enabled):


4. SQL Server Azure: configurar usuario

Ahora, debemos configurar un acceso en el propio motor de base de datos. Dependiendo de nuestra base y configuración, podríamos llegar a tener ya creado un usuario para "Acceso remoto":


Si ese es el caso, podríamos reutilizarlo. Sino debemos crear uno nuevo y asegurarnos de que tenga acceso a la base de datos a la cual nos queremos conectar.

5. Visual Studio local: Conectar remotamente a SQL Azure

Por último, vamos a revisar si finalmente todo nuestro esfuerzo fue suficiente para establecer la conexión. Para ello, abrimos el Visual Studio y seguimos los pasos necesarios para crear una solución de tipo SQL Server Project tal como está explicado en este artículo: Cómo serializar una base SQL con Visual Studio  

En esta ocasión, vamos a explicar cómo agregar un proyecto a una solución ya existente. Una vez abierta nuestra solución, hacemos clic derecho sobre la misma y seleccionamos Add -> New Project...:


Definimos el nombre del nuevo proyecto:


Verificamos que se haya agregado correctamente a la solución:


Lo próximo que vamos a hacer, es configurar el proyecto para que sea posible la conexión a Azure. Hacemos clic derecho sobre el mismo y abrimos las propiedades:


En el campo Target platform: seleccionamos Micosoft SQL Azure Database V12 (dependiendo del tipo de versión de base de datos que tengamos en Azure).


El próximo paso es "importar" la base de datos a nuestro proyecto. Para dar curso a ello, iremos a la solución y haremos clic derecho, luego seleccionaremos Import -> Database...:


En la ventana que aparece, hacemos clic en New connection...:


Como también vemos en la imagen de arriba, configuramos los siguientes campos:
  • Server name: ingresamos el nombre de nuestra máquina virtual, es decir, el mismo que usamos para acceder remotamente.
  • Log on to the server: seleccionamos la opción Use SQL Server Authentication y completamos tanto el User name: (ej.: RemoteUser) y la Password.
  • Finalmente, en Select or enter a database name: seleccionamos el nombre de nuestra base de datos.
Para terminar hacemos clic en Ok y empezará la importación:


De esa manera ya tenemos toda la base de datos de SQL Azure serializada en nuestro proyecto de Visual Studio:


Damos entonces por cumplido nuestro objetivo de poder comunicarnos desde nuestro Visual Studio local a nuestra base SQL Azure. Esto nos habilita a obtener muchos beneficios como: realizar el versionado de la base de datos, facilitar el trabajo de equipos de varios miembros, impactar las modificaciones desde un acceso remoto, entre otros.

Autor:


Julián Haeberli
Baufest Technical Leader