Published on

February 25, 2020

Recuperando Dados Excluídos no SQL Server Usando Backups de Banco de Dados

Já excluiu acidentalmente dados importantes no seu banco de dados do SQL Server? Não se preocupe, há uma maneira de recuperá-los usando backups de banco de dados. Neste artigo, exploraremos como recuperar dados removidos por meio das instruções SQL Delete e SQL Truncate usando backups de banco de dados.

Compreendendo as Instruções Delete e Truncate

Antes de mergulharmos no processo de recuperação, vamos recapitular rapidamente como as instruções delete e truncate funcionam no SQL Server. A instrução delete é usada para remover linhas específicas de uma tabela com base em uma condição, enquanto a instrução truncate remove todas as linhas de uma tabela. É importante observar que as instruções delete podem ser revertidas, mas as instruções truncate não.

Criando um Ambiente de Banco de Dados de Teste

Vamos começar criando um ambiente de banco de dados de teste para nossa demonstração. Criaremos um novo banco de dados e duas tabelas: “DeletemyData” e “TruncatemyData”. A tabela “DeletemyData” será usada para a instrução delete, enquanto a tabela “TruncatemyData” será usada para a instrução truncate.

CREATE DATABASE SQLShackDemo;
GO

USE SQLShackDemo;
GO

CREATE TABLE DeletemyData (
    id INT IDENTITY(1, 1),
    [Name] VARCHAR(40)
);
GO

CREATE TABLE TruncatemyData (
    id INT IDENTITY(1, 1),
    [Name] VARCHAR(40)
);
GO

Fazendo um Backup Completo do Banco de Dados

Agora que temos nosso ambiente de banco de dados configurado, vamos fazer um backup completo do banco de dados. Esse backup servirá como um ponto de restauração caso precisemos recuperar os dados excluídos posteriormente.

BACKUP DATABASE SQLShackDemo TO DISK = 'c:\temp\SQLShackdemo.bak';

Recuperando Dados Excluídos

Suponha que excluímos acidentalmente alguns dados da tabela “DeletemyData” usando uma instrução delete. Podemos usar a seguinte consulta para recuperar os dados excluídos do log de transações:

USE SQLShackDemo;
GO

SELECT [Current LSN], [transaction ID] tranID, [begin time], Description, operation, Context
FROM ::fn_dbLog(NULL, NULL)
WHERE [Transaction Name] = 'Delete';

Essa consulta nos mostrará os registros de log relacionados à operação de exclusão. Podemos então usar os registros de log para recuperar os dados excluídos do backup do banco de dados.

Da mesma forma, se excluirmos acidentalmente a tabela “TruncatemyData”, podemos usar a seguinte consulta para recuperar os registros de log:

USE SQLShackDemo;
GO

SELECT [Current LSN], [transaction ID] tranID, [begin time], Description, operation, Context
FROM ::fn_dbLog(NULL, NULL)
WHERE [Transaction Name] = 'Truncate table';

Depois de obtermos os registros de log, podemos restaurar o backup do banco de dados no modo NORECOVERY e aplicar o backup do log de transações para recuperar os dados excluídos.

Conclusão

Excluir dados acidentalmente no SQL Server pode ser um pesadelo, mas com a ajuda de backups de banco de dados, podemos recuperar os dados perdidos. Ao entender como as instruções delete e truncate funcionam e usar os registros de log de transações, podemos recuperar com sucesso os dados excluídos. Lembre-se sempre de criar um ambiente de teste e evitar realizar testes em bancos de dados de produção.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.