Restaurando una Base de Datos SQL desde un Snapshot

En lo particular comenzare este articulo definiendo segun Books Online lo que es un Snapshot, que en lo particular lo considero como uno de los mas interesantes conceptos utilizados en la actualidad.

Snapshop: es una vista estática de sólo lectura de una base de datos denominada base de datos de origen. Pueden existir varias instantáneas en una base de datos de origen y residir siempre en la misma instancia de servidor que la base de datos. Una instantánea de base de datos es coherente en cuanto a las transacciones con la base de datos de origen tal como existía en el momento de la creación de la instantánea. Una instantánea se mantiene hasta que el propietario de la base de datos la quita explícitamente.

En resumen es una fuente de datos estatica de solo lectura, en la cual podemos consultar informacion de la misma e incluso hacer transacciones en la misma.

En esta ocacion procedere a crear una nueva base de datos la cual llamare OmarFrometa_DB, en el cual voy a crear una nueva tabla y le voy a insertar al menos 5 nuevos valores:



Luego procedere a Crear mi Snapshot en mi base de datos OmarFrometa_DB.


Despues de esto voy a realizarle un Select tanto a mi tabla como a al Snapshot creado, para que asi logren notar su comportamiento.

En otro capitulo seguire ampiando todo lo que podemos hacer con estas fotografias de la base de datos (Snapshot) y asi podremos explotar al maximo este concepto que existe desde la version 2005 de SQL pero que muy pocas personas aun lo estan utilizando.

Aqui les dejo todo el Codigo que Utilice.


USE master
GO

CREATE DATABASE OmarFrometa_DB
GO
USE OmarFrometa_DB
GO

CREATE TABLE Numeros (ID INT, Value VARCHAR(10))
INSERT INTO Numeros VALUES(1, 'Uno');
INSERT INTO Numeros VALUES(2, 'Dos');
INSERT INTO Numeros VALUES(3, 'Tres');
INSERT INTO Numeros VALUES(4, 'Cuatro');
INSERT INTO Numeros VALUES(5, 'Cinco');
GO

CREATE DATABASE SnapshotDB ON
(Name ='OmarFrometa_DB',
FileName='c:\SSOmarFrometa_DB.ss1')
AS SNAPSHOT OF OmarFrometa_DB;
GO

SELECT * FROM OmarFrometa_DB.dbo.Numeros;
SELECT * FROM OmarFrometa_DB.dbo.Numeros;
GO