Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Automatize a restauração de teste de banco de dados no SQL Server


Este artigo fala sobre a automatização do processo de restauração do banco de dados que geralmente é feito manualmente pelo DBA ou pela equipe de infraestrutura responsável pelo gerenciamento do(s) servidor(es) de banco de dados e banco(s) de dados.

Este artigo também destaca a importância de automatizar tarefas de administração de banco de dados, como backup e restauração de banco de dados, para garantir que a consistência e a confiabilidade dos bancos de dados de produção estejam intactas.

Além disso, haverá algumas dicas sobre como planejar e implementar a automação de tarefas de restauração de banco de dados em um cenário da vida real.

Restauração de teste de banco de dados e CheckDB (perspectiva DBA)


A importância do backup e restauração do banco de dados SQL Server do ponto de vista do administrador do banco de dados ou da equipe de infraestrutura (responsável pelo gerenciamento do servidor do banco de dados) é muito mais do que apenas executar o backup e a restauração, pois essa é uma das formas de garantir que o estratégia de recuperação de desastres (DR) está bem implementada.

Isso também significa que as operações de backup e restauração do banco de dados são mais eficazes se forem suportadas por qualquer outro mecanismo de verificação de consistência.

Usando o comando DBCC CHECKDB


O SQL Server apresenta um comando útil para verificar a consistência de um banco de dados.

De acordo com a documentação da Microsoft, o comando DBCC CHECKDB é usado para verificar a integridade lógica e física de todos os objetos no banco de dados executando várias operações diferentes.

A execução bem-sucedida do comando sem erros indica que o banco de dados está em um estado estável e consistente.

Este comando pode ser executado da seguinte forma, desde que o banco de dados desejado esteja conectado:

Cenário de restauração de teste de banco de dados


Vamos considerar um cenário do mundo real no qual um DBA está criando consistentemente backups do banco de dados de produção.

No entanto, a criação de backups não garante que a recuperação de desastres do banco de dados, também conhecida como DR, esteja em vigor, a menos que o banco de dados seja restaurado com êxito.

Portanto, o banco de dados deve ser restaurado a partir do backup para garantir que, em caso de qualquer incidente no banco de dados, os dados possam ser restaurados com sucesso.

O backup do banco de dados de produção nunca deve ser restaurado no servidor de produção para fins de teste.

Então, como um DBA garante que o backup está tudo bem? Simplesmente restaurando o backup mais recente do banco de dados em outro servidor de teste.

Depois que o backup do banco de dados for restaurado com êxito, o comando DBCC CHECKDB deve ser executado para garantir que o banco de dados restaurado seja consistente e estável.

Esta é uma tarefa importante, mas demorada, que também requer muitos cuidados. Idealmente, ele deve ser automatizado – a menos que suas regras e regulamentos organizacionais restrinjam a automação dessa tarefa específica.


Automatizando a restauração de teste de banco de dados


Vamos agora ver como automatizar a restauração de teste de banco de dados em detalhes.

Planejando a restauração de teste do banco de dados


É muito importante planejar suas etapas para que você possa automatizá-las com facilidade. O planejamento também exige que você atenda às pré-condições da automação de tarefas SQL.

Pré-condições


Certifique-se de que as seguintes pré-condições sejam atendidas antes de automatizar as tarefas de restauração de banco de dados no SQL Server usando a maneira tradicional:
  1. Sua automação não entra em conflito com as regras e regulamentos organizacionais
  2. Você está autorizado a automatizar esta tarefa
  3. O SQL Agent está em execução
  4. O servidor de banco de dados no qual a restauração ocorrerá deve estar funcionando
  5. O processo de backup do banco de dados já está automatizado e o backup é enviado para uma unidade de backup
  6. A unidade de backup pode ser acessada pelo servidor de teste

Resumo das etapas

  1. O backup do banco de dados é executado em um servidor
  2. Este backup é salvo em uma unidade de backup acessível por outro servidor de teste
  3. Um trabalho SQL foi agendado no servidor de teste para executar a restauração do backup
  4. A execução do SQL Job pode ser seguida pela execução manual do DBCC CheckDB no banco de dados restaurado, mas também pode ser automatizado

Artigo de referência


Consulte o artigo Noções básicas da automação de tarefas do SQL Server para automatizar a tarefa de backup do banco de dados, pois este artigo pressupõe que a tarefa de backup do banco de dados já foi automatizada e salva o backup em uma unidade de backup que pode ser acessada por um servidor de teste.

Replicando a tarefa de backup do banco de dados


Vamos supor que a tarefa de backup tenha sido executada e um backup tenha sido criado em uma unidade de backup.

Para replicar esta tarefa, vamos criar um banco de dados de exemplo chamado UniversityV7 do seguinte modo:
-- (1) Create the UniversityV7 sample database
CREATE DATABASE UniversityV7;
GO

USE UniversityV7

CREATE TABLE [dbo].[Student] (
    [StudentId] INT           IDENTITY (1, 1) NOT NULL,
    [Name]      VARCHAR (30)  NULL,
    [Course]    VARCHAR (30)  NULL,
    [Marks]     INT           NULL,
    [ExamDate]  DATETIME2 (7) NULL,
    CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ([StudentId] ASC)
);
GO

INSERT INTO [dbo].[Student]
           ([Name]
           ,[Course]
           ,[Marks]
           ,[ExamDate])
     VALUES
           ('Asif'
           ,'Power BI Fundamentals'
           ,85
           ,'01 Jan 2019'),
		   ('Mike'
           ,'Power BI Fundamentals'
           ,80
           ,'01 Jan 2019'),
		   ('Sadaf'
           ,'Power BI Fundamentals'
           ,75
           ,'01 Jan 2019')
		   
GO

A execução desse script cria e preenche o banco de dados de amostra.

Verifique o banco de dados executando o seguinte script:
SELECT [StudentId]
      ,[Name]
      ,[Course]
      ,[Marks]
      ,[ExamDate]
  FROM [UniversityV7].[dbo].[Student]

A saída deve ser a seguinte:



Vamos supor que a tarefa de backup seja automatizada. No entanto, para pular esta etapa, ainda temos que criar manualmente o backup do banco de dados e salvá-lo em uma unidade de backup acessível pelo servidor de teste.

Replique a tarefa de backup do banco de dados executando o seguinte script T-SQL:
-- Backup the UniversityV7 sample database using the date stamp
DECLARE @BackupName VARCHAR(100)
SET @BackupName=CONCAT('C:\Backup\UniversityV7-',FORMAT(GETDATE(),'yyyy-MM-dd'),'.bak')
BACKUP DATABASE UniversityV7 TO [email protected] WITH COMPRESSION, INIT;
GO

Verificação de backup do banco de dados


Verifique o backup do banco de dados navegando até a pasta onde acabamos de criar o backup e visualize o arquivo de backup:


Conectar a outra instância SQL


Agora, vamos nos conectar a outra instância SQL para emular um servidor de teste. A primeira coisa a verificar é se o SQL Agent está em execução ou não.

Iniciar o SQL Agent (se não estiver em execução)


Clique com o botão direito do mouse em SQL Server Agent e clique em Iniciar como mostrado abaixo:


Criar um novo trabalho


Em seguida, clique com o botão direito do mouse em Trabalhos , clique em Novo trabalho… e digite o nome do trabalho como “Restauração de teste de banco de dados ”:



Em seguida, selecione Etapas no menu de navegação à esquerda, clique em Novo , e digite “Restauração de teste de banco de dados ” como o nome da etapa:



Digite o seguinte script T-SQL na caixa de entrada Comando depois de verificar se o tipo T-SQL está selecionado na lista suspensa correspondente.
-- Restore the UniversityV7 sample database 
RESTORE DATABASE UniversityV7 FROM DISK=N'C:\Backup\UniversityV7-2019-08-27.bak'
WITH
MOVE 'UniversityV7' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLTAB\MSSQL\DATA\UniversityV7_Data.mdf',
MOVE 'UniversityV7_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLTAB\MSSQL\DATA\UniversityV7_Log.ldf'
,RECOVERY,REPLACE,STATS=10;
GO

Observe que o caminho C:\Program Files\Microsoft SQL Server\MSSQL12.SQLNAME\MSSQL\DATA\UniversityV7_Data.mdf fornecido em este script é apenas para fins de demonstração. S você deve substituir isso por real caminho de sua instância de servidor SQL de teste.



Por fim, clique em OK.

Agende o trabalho para ser executado em 2 minutos


Clique com o botão direito do mouse em Restauração de teste de banco de dados trabalho em Trabalhos e clique em Propriedades:



Clique em Novo , digite “A cada 2 minutos (teste) ”, e defina o agendamento para ser executado após dois minutos:



Após alguns minutos, conecte-se ao servidor de teste e expanda os Bancos de dados nó para ver que o UniversityV7 banco de dados foi restaurado com sucesso por uma tarefa automatizada do SQL Server (Job).



Sinta-se à vontade para executar o DBCC CheckDB para garantir que o processo de restauração do banco de dados esteja bem.

Parabéns! Você automatizou com sucesso o processo de restauração de teste do banco de dados.

Coisas para fazer


Agora que você pode automatizar o backup do banco de dados e a restauração do teste, tente concluir as seguintes tarefas para melhorar suas habilidades:
  1. Adicione o DBCC CheckDB como parte do processo de restauração automatizada do banco de dados
  2. Automatize o backup em um servidor e restaure-o em outro servidor de teste
  3. Automatize as tarefas de backup de banco de dados e teste de restauração para vários bancos de dados