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.
![](http://fabridata.com/wp-content/uploads/2020/02/versao-sql-server.png)
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.
![](http://fabridata.com/wp-content/uploads/2020/02/select@@version.png)
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
![](http://fabridata.com/wp-content/uploads/2020/02/headeronly-sql-server-1024x156.png)
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.
![](http://fabridata.com/wp-content/uploads/2020/02/sql-server-acesso-exclusivo-1.png)
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.