terça-feira, 10 de agosto de 2010

Trabalhando com Database Snapshots

O que é um Database Snapshot?
Snapshot é uma "fotografia" da base de dados em um estado consistente em um determinado momento.
Este recurso, disponível nas versões do SQL Server 2005 e 2008, permite a criação rápida de um ambiente somente-leitura para relatórios, testes, proteção contra erros de usuário, etc.

Como funciona?
Ao criar um snapshot, cria-se um novo banco vazio (Snapshot DB) que será preenchido com os dados originais conforme estes são alterados após a criação do Snapshot.

Quando um Snapshot é configurado para uma base de dados (base de dados fonte), o SQL Server executa um processo chamado copy-on-write. Neste processo, ao alterar uma página de dados na base de dados fonte, uma cópia da página original é armazenada na base de dados Snapshot. Essa operação é válida somente para a primeira alteração na página de dados, mantendo, assim, a cópia original na base Snapshot.

Ao ler os dados da base Snapshot, o SQL Sever retorna os dados da base de dados fonte, porém as páginas alteradas são substituídas pelas páginas armazenadas no banco de dados Snapshot, resultando em uma "visão" do momento em que o Snapshot foi criado.

Criando um Snapshot
Para criar um Snapshot, utiliza-se o comando CREATE TABLE com algumas modificações:

CREATE DATABASE SnapshotDatabaseName
ON
(name = sourcefilename1 , FILENAME =  snapshotfilepath1),
(name = sourcefilename2 , FILENAME =  snapshotfilepath2)
AS
SNAPSHOT OF SourceDatabaseName

Restaurando um Snapshot
Pode-se também restaurar uma base de dados, para o estado em que o Snapshot foi criado. Para isso, utiliza-se o comando:

RESTORE DATABASE databaseName FROM
DATABASE_SNAPSHOT = SnapshotDatabaseName

Considerações
Este não pode ser utilizado como backup, uma vez que a base Snapshot só armazena as página de dados alteradas na base original desde a criação do Snapshot.

Referências
How Database Snapshots Work (MSDN)

Nenhum comentário:

Postar um comentário