Wednesday, November 22, 2017
SQL

¿Para qué sirven las instantáneas o snapshots en SQL Server?

>helibertoarias helibertoarias
octubre 28, 2014

El termino snapshot o instantánea en las bases de datos no difiere en mucho al comportamiento que tienen las snapshot de una maquina virtual creada usando VirtualBox o VMware. Básicamente estas instantáneas permiten revertir todos los cambios realizados en la base de datos como eliminación de tablas, modificación de procedimientos almacenados y cualquier operación CRUD realizada.  A diferencia de restaurar un backup, con el fin de llevar una base de datos a un estado previo, un snapshot es más fácil y rápido de aplicar. Por ejemplo, dependiendo del tamaño de la base de datos, una restauración desde un backup (.bak)  puedes demorar 30 minutos mientras que con un snapshot esta únicamente emplea 1 o 2 minutos. Usar las snapshots puede ser de gran utilidad cuando nos encontramos trabajando en procesos en los que es necesario aplicar cambios en la estructura de la base de datos y se requiere rápidamente volver a un estado anterior. Los snapshot también pueden ser usados para cuando  se aplican cambios críticos por lotes en una base de datos productiva y  se quiere volver a un punto anterior rápidamente sin tener que restaurar backup ya que este requiere más tiempo para ejecutarse.

1. Creando snapshots en SQL Server

En SQL Server es posible crear snapshots  únicamente a través de sentencias. En estas se debe iniciar; el nombre de la base de datos con la que se guardará el snapshot, el listado de nombres de cada archivo lógico al que se le creará el snapshot, especificando para cada uno la ruta. Finalmente, se indica la base de datos de la cual se creará el snapshot. Por ejemplo, para la base de datos AdventureWork la sentencia será al siguiente

Con la ejecución de este comando podemos ver que hemos creado una nueva base de datos de sólo lectura llamada AdventureWorks_Snapshot sobre la cual podemos realizar consultas.

2. Restaurando snapshots

Una vez que se crea un snanpshot podemos ver que se genera un copia “incompleta” para cada archivo que tenga la base de datos. Por ejemplo, con la ejecución de la sentencia anterior se creó un archivo llamado AdventureWorks_Snapshot.ss,  este almacenará el estado inicial de la base de datos y aumentará de manera progresiva de acuerdo a los cambios que se realicen sobre la base de datos original.

Archivo Snapshot

Archivo Snapshot aumenta progresivamente

Para regresar la base de datos AdventureWorks al estado en el que se creo el snapshot es necesario utilizar la siguiente sentencia.

3. Limitaciones y restricciones

Aunque el trabajar con snapshots ofrece una manera fácil y rápida de revertir todos los cambios aplicados en una base de datos hasta llevarla al punto de creación del snapshot, es cierto también que existen unas limitaciones y restricciones que hay que tener en cuenta por ejemplo:

  • La creación de snapshot solo esta disponible en las versiones Enterprise a partir de SQL Server 2005.
  • Sólo se permite una snapshot por cada base de datos.
  • La base de datos debe estar online cuando se crea el snapshot.
  • No se puede restaurar un backup sobre una base de datos que tiene un snapshot.
  • No se puede eliminar una base de datos si esta tiene un snapshot creado.
  • Si la base de datos esta corrupta entonces el snapshot también lo estará.

4. Cuando usar snapshots

Es recomendado usar snapshots en los siguientes casos

  • Se quiere crear tener puntos de restauración antes de aplicar cambios importantes en la base de datos.
  • En ambientes de pruebas cuando se requiere rápidamente volver a un estado previo luego de ejecutar varios procesos sobre los datos.
  • Se quiere crear mantener temporalmente información histórica para la generación de reportes.
  • Cuando se quiere utilizar una base de datos reflejada este disponible para el acceso a la generación de reportes mientras se realizan tareas de mantenimiento.

Para mayor información consulta aquí

(Visitado 1.631 veces, 20 visitas hoy)
Heliberto Arias
Mi nombre es Heliberto Arias y vivo en Barranquilla, Colombia. Soy desarrollador de software. He estado en el desarrollo de software desde el 2007. Cree este blog en 2013 para compartir lo que voy aprendiendo cada año y en el escribo de tecnologías Microsoft principalmente en C# (y aunque he usado VB declaro que lo detesto) y SQL Server desarrollado aplicaciones y servicios web entre otro s.Me gustaría mucho si te suscribes a mis redes en Youtube, Google+, Twitter, e Instagram.

Comments

No comments found!

Leave a Comment

Your email address will not be published.

16 − siete =

Login
Remember me
Lost your Password?
Password Reset
Login