Como restaurar o banco model e msdb no SQL Server

Devido a uma recente reconstrução do banco de dados master em uma instância do SQL Server, precisei restaurar os bancos de dados msdb e model. Nesta dica, irei percorrer o processo que você precisa seguir para restaurar os bancos de dados model e msdb com facilidade.

Mas primeiro, para que serve o banco de dados model e msdb, vamos discutir rapidamente para que servem estes dois bancos.

  • O banco de dados msdb contém jobs, alertas e histórico de backup, um plano de backup então também deve ser implementado para o banco de dados msdb.
  • O banco de dados model é o modelo para criar qualquer novo banco de dados de usuário para uma instância específica do SQL Server. Os DBAs podem modificar o banco de dados model com as configurações necessárias e quando um novo banco de dados de usuário for criado, ele refletirá a configuração do banco de dados model. 
  •  Portanto, os bancos de dados msdb e model podem precisar ser recuperados em cenários como corrupção do banco de dados, uma reconstrução do banco de dados master ou após uma nova configuração do servidor. O processo de restauração do msdb ou model exige considerações diferentes que as dos bancos de dados de usuário. O processo de restauração pode ficar complicado se as versões não forem rastreadas e o acesso exclusivo não for garantido em todos os aspectos. Neste artigo Irei explicar todo o processo de restauração dos bancos de dados msdb e model.

MSDB

Use o comando a seguir para criar um backup completo do banco de dados msdb usando comandos T-SQL. Você precisará modificar o script para usar um caminho de backup válido. Você também pode executar o mesmo processo para o banco de dados model.

–Script 1: Criação de backup msdb

USE [master]

GO

BACKUP DATABASE [msdb]

TO DISK = N’E:\MSDB_Backup.Bak’

WITH INIT,

NAME = N’msdb Backup’

GO

Após a conclusão, temos um backup completo que pode ser restaurado posteriormente caso necessário.

Restauração

Para fazer a restauração precisamos seguir estas etapas.

1 – Saber a versão do servidor de origem no qual o backup foi criado.

2 – Confirmar as versões dos servidores de origem e destino se são iguais;

3 – Garantir acesso exclusivo ao banco de dados;

Obter versão do servidor de destino

As versões do SQL Server precisam ser as mesmas para a origem e o destino ao restaurar o banco de dados msdb ou model. Se as versões para os servidores de origem e destino não corresponderem, a restauração ira falhar.

No caso de uma incompatibilidade, a versão do SQL Server para o destino precisa ser manipulada instalando ou removendo service packs.

Aqui estão as três maneiras de obter a versão para o mecanismo de banco de dados do SQL Server.

Usando o SSMS Object Explorer

Conecte-se a uma instância do SQL Server através do SSMS e localize a versão do SQL Server no explorador de objetos, como mostrado abaixo.

Usando o  select version@@

A versão do SQL Server também pode ser recuperada usando select @@ version. Ele pode ser usado em uma instrução de seleção simples, como mostrado abaixo.


Obter versão do servidor de origem no qual o backup foi criado

Agora precisamos obter a versão do servidor de origem no qual o backup foi criado. A melhor maneira de fazer isso é obter as informações do próprio arquivo de backup, como mostrado abaixo, usando o comando RESTORE HEADERONLY.

RESTORE HEADERONLY

FROM DISK = N’C:\BACKUP\backup_msdb.Bak’GO

Acima está a saída parcial do comando e podemos ver os valores se são equivalentes à saída dos outros comandos que examinamos anteriormente.

Garanta acesso exclusivo

O acesso exclusivo ao banco de dados é necessário, assim como a restauração de qualquer banco de dados, mas no caso do msdb é um pouco mais exigente. No caso do msdb, também precisamos considerar o serviço SQL Agent. Se o serviço do agente do SQL Server estiver em execução, o acesso exclusivo não poderá ser feito. Abaixo podemos ver que o serviço SQL Agent está sendo executado consultando sys.sysprocesses.

Para o msdb, precisamos interromper o serviço SQL Agent para garantir o acesso exclusivo. Isso pode ser feito clicando com o botão direito do mouse no SQL Server Agent e selecionando Stop .

Restaurar msdb

Nesse ponto, nossos requisitos foram atendidos e estamos prontos para executar a restauração. Execute o seguinte comando para o processo de restauração.

–Script 3: Restore msdb

USE master

GO

RESTORE DATABASE [msdb]

FROM DISK = N’E:\MSDB_Backup.Bak’

WITH REPLACE

GO

O banco de dados msdb agora esta restaurado. Agora precisamos colocar o banco de dados novamente em modo multiuser e iniciar o serviço do agente do SQL Server.

Os mesmos requisitos e processos também funcionam para o banco de dados do model, exceto que o serviço SQL Agent que não é um problema. 

Outro aspecto a ser observado é que você pode restaurar os bancos de dados msdb e model em edições como Express, Developer, Standard e Enterprise. Você só precisa se preocupar que as versões sejam as mesmas.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *