miércoles, 10 de agosto de 2016

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


Este artículo indica cómo podemos serializar una base de datos de SQL Server con Visual Studio y sus ventajas.

Serializar una base SQL en Visual Studio significa que tomaremos la estructura de una base previamente creada y la convertiremos en instrucciones SQL. ¿Y qué significa esto? Bueno, por ejemplo, si tenemos una tabla de artículos con dos campos: 


Al serializarla estaremos guardando una instrucción similar a esta:



¿Y para qué nos sirve hacer esto? Para responder esta pregunta pasaremos a la siguiente sección.

Beneficios

  • A diferencia de cuando editamos características en el SQL Server Management Studio, si en el proyecto de Visual Studio realizamos alguna modificación no deseada, podemos hacer rollback, siempre y cuando no se trate de datos en las tablas.
  • Las modificaciones pueden ser comiteadas directamente en un repositorio de fuentes como el Team Foundation Server (TFS).
  • Nos brinda la posibilidad de aplicar los cambios (deploy) en distintos ambientes con sólo cambiar la conexión.
  • Existe la posibilidad de crear scripts para insertar datos de pruebas o de tablas maestras luego de cada deploy, facilitando el testing de aplicaciones.
  • Se facilita el trabajo en equipo cuando el grupo de desarrollo es de varios miembros.
Desventajas

  • No versiona datos internos de las tablas, para ello hay sólo tres opciones:


  1. Hacer backups. Contra: pueden tener un tamaño de varios gigabytes.
  2. Crear scripts automáticamente que ingresen los datos a las tablas (insert into). Contra: la posterior ejecución de esos scripts demora horas.
  3. Crear un método complejo en el cual la información de cada registro de cada tabla no es borrada sino que tiene un estado, e incorporar fecha y hora. Contra:  el tamaño de las tablas se incrementa rápidamente, repercutiendo en la performance. Generalmente no se justifica el costo-beneficio de su implementación.

Manos a la obra

Bien, ahora que entendemos las opciones que nos brinda esta herramienta de Visual Studio, entonces pasaremos a comentar cómo es que se organiza.

Requisitos

Para empezar, debemos contar con las herramientas necesarias:

  • Visual Studio: desde la versión 2010 en adelante.
  • Acceso a un servidor SQL Server 2005 en adelante.

Creando el proyecto

Como siempre, en Visual Studio lo primero que haremos será crear una solución. En este caso, la que nos interesa es la de tipo "SQL Server Database Project". La crearemos de la siguiente forma:





El resultado es un proyecto nuevo y, obviamente, vacío:



Importando la base de datos

El próximo paso, es agregar la base de datos de SQL Server a nuestro nuevo proyecto. Para iniciar la importación hacemos clic derecho sobre el proyecto y seleccionamos la opción Import - Database:



Lo siguiente, es establecer una conexión desde Visual Studio al servidor SQL. P para ello, haremos clic en el botón New Connection...


Agregamos el nombre del servidor SQL en Server name luego desplegamos el combo Select or enter a database name: y seleccionamos la base de datos que vamos a serializar, para este ejemplo es la base de datos de nombre "Prueba":



Adicionalmente, podemos hacer clic en el botón Test Connection, pero si en el combo anteriormente ya nos muestra los nombres de las bases, podemos estar seguros de que la conexión funcionó perfectamente. 
Debemos mencionar que en este caso nuestra base de datos está configurada para aceptar el logueo de usuarios del mismo dominio de nuestra empresa: Active Directory. Si ese no fuese el caso, podemos agregar un usuario dentro del servidor SQL y establecemos la conexión utilizando ese usuario seleccionando la opción Use SQL Server Authentication. Una vez que aceptamos esta ventana, regresamos al formulario de importación y aprovechamos entonces para verificar que haya quedado seleccionada la base de datos que queremos serializar:


Iniciamos el proceso de importación haciendo clic en el botón Start, este es el resultado:



Vemos que se agregó un archivo al proyecto:



Este archivo es el resultado de serializar la tabla Artículos que habíamos creado. Recordemos que este es un ejemplo sencillo para facilitar el aprendizaje. Una base de datos productiva está compuesta de tablas, procedimientos almacenados, funciones, varios usuarios, y otros componentes;odos ellos pueden ser serializados en nuestro proyecto. 
Al abrir el archivo Articulos.sql vemos cómo Visual Studio lee el código contenido en él y dibuja una tabla, además de mostrar el código fuente:



De esta manera, vemos lo fácil que es serializar una base de datos. Simplemente hay que crear un proyecto, establecer la conexión e importar la base. El resto es automático.

Autor:


Julián Haeberli 
Baufest Technical Leader