Usuário com melhor resposta
Selecionar dados retroativos no SQL

Pergunta
-
Bom dia,
Estou utilizando o SQL Server 2008, e gostaria de saber se alguém poderia me tirar uma dúvida:
É possível selecionar dados do banco em datas anteriores?
Exemplificando, eu tenho uma tabela "funcionario" que contém um campo "endereco". O campo "endereço" continha uma informação no dia 12/02/2009, porém a informação foi atualizada através de um comando update no dia 15/02/2009.
Eu consigo selecionar o valor que havia no campo em 12/02/2009?
Abs.
Respostas
-
Olá Fábio,
O ORACLE possui essa funcionalidade e senão me engano chama-se ORACLE Flash Back. O Oracle manterá as transações em um segmento de UNDO e dessa forma será possível que você pesquise a situação do banco em algum passado próximo. Normalmente essa funcionalidade é configurada para 15 minutos, ou seja, se você fizer algo "errado", poderá consultar a situação do banco a 15 minutos atrás. É possível configurar para mais tempo, mas creio que três dias signifiquem um OVERHEAD bem considerável.
A partir do SQL Server 2005 existe um recurso para tentar competir com o ORACLE Flash Back. Esse recurso é conhecido como Database Snapshot. No seu caso você tiraria uma "foto" (SNAPSHOT) do banco no dia 12 e quando chegasse no dia 15 você poderia consultar a foto do dia 12. Em virtude dos "ponteiros inteligentes" do SNAPSHOT, ele ocupa muito menos espaço e não se trata de um backup. É um recurso muito interessante, mas possui um certo OverHead nas operações de INSERT, DELETE e UPDATE. Recomendo pesquisar o Books OnLine para maiores detalhes.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com/
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta FabioYoung segunda-feira, 2 de março de 2009 15:39
- Marcado como Resposta FabioYoung segunda-feira, 2 de março de 2009 15:39
Todas as Respostas
-
Olá,
Você só conseguirá restaurar esta linha, se tiver como restaurar um backup que contenha os dados do dia 12.
De acordo com a tua estratégia de backups, você pode criar um novo database, restaurar o backup que contenha estas informações (seja este um backup full, differential ou de transações), encontrar a linha desejada e movê-la/sobrescrevê-la para o seu database corrente.
Um abraço,
Raul Santos Neto -
Fábio,
Concordo com o Raul, outra possibilidade seria caso este dado do dia 12 esteja armazenado em outra tabela.
O volume de dados retroativos que você deseja recuperar é muito grande, esta recuperação é algo a ser realizado diáriamente?
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA -
Raul e Junior,
Obrigado pela resposta.
Na verdade eu costumo recuperar os dados dessa maneira mesmo, restaurando o backup para um banco diferente e selecionando o registro nesse banco de backup.
Como os bancos são muito grandes, pensei se não existiria uma maneira mais rápida.
Alguns amigos comentaram que no Oracle é possível selecionar um dado que já foi alterado, sem a necessidade de voltar um backup. Claro que não vi isto na prática funcionando, e pesquisei também se haveria alguma maneira de fazer o mesmo no SQL Server. Não obtive sucesso na pesquisa, então pensei em trocar uma idéia aqui no fórum.
Abs.
-
Olá Fábio,
O ORACLE possui essa funcionalidade e senão me engano chama-se ORACLE Flash Back. O Oracle manterá as transações em um segmento de UNDO e dessa forma será possível que você pesquise a situação do banco em algum passado próximo. Normalmente essa funcionalidade é configurada para 15 minutos, ou seja, se você fizer algo "errado", poderá consultar a situação do banco a 15 minutos atrás. É possível configurar para mais tempo, mas creio que três dias signifiquem um OVERHEAD bem considerável.
A partir do SQL Server 2005 existe um recurso para tentar competir com o ORACLE Flash Back. Esse recurso é conhecido como Database Snapshot. No seu caso você tiraria uma "foto" (SNAPSHOT) do banco no dia 12 e quando chegasse no dia 15 você poderia consultar a foto do dia 12. Em virtude dos "ponteiros inteligentes" do SNAPSHOT, ele ocupa muito menos espaço e não se trata de um backup. É um recurso muito interessante, mas possui um certo OverHead nas operações de INSERT, DELETE e UPDATE. Recomendo pesquisar o Books OnLine para maiores detalhes.
[ ]s,
Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.com/
Classifique as respostas. O seu feedback é imprescindível- Marcado como Resposta FabioYoung segunda-feira, 2 de março de 2009 15:39
- Marcado como Resposta FabioYoung segunda-feira, 2 de março de 2009 15:39
-