Para aqueles que ainda não sabem, o banco de dados master é um banco de dados de sistema assim como o model, msdb e o tempdb. A diferença é que o master é o coração do SQL Server. É nele que fica armazenado seus logins, devices de backup, os bancos existentes no servidor bem como sua localização física e várias outras configurações.
Perder o banco de dados master, na prática significa perder a instalação do SQL Server pois sem ele o serviço do SQL Server não inicia e com isso, todas as suas bases ficam indíponíveis.
Existe vários momentos em que pode ser preciso restaurar a master, mas para este artigo estarei assumindo que ela foi corrompida e que o SQL Server não consegue inicializar.
Uma vez que o SQL Server não consegue inicializar, primeiro teremos que fazer o rebuild da master utilizando o utilitário rebuildm.exe e depois restaurar aquele velho e bom backup (que com certeza fazemos todos os dias certo?) 🙂
Antes de utilizar o utilitário rebuildm, recomendo a leitura do artigo http://support.microsoft.com/?id=273572 o qual descreve um bug na utilização deste.
PASSOS PARA RESTAURAR O BANCO DE DADOS MASTER
1) O primeiro passo para restaurar o banco de dados master é garantir que se tenha um backup sempre atualizado. Então vamos fazer um backup da master. Aqui utilizo o Query Analyzer (QA) mas se preferir pode usar também o Enterprise Manager.

Faça também um backup das bases model e msdb. Ao utilizarmos o utilitário rebuildm, este irá recriar todas as bases de sistema como se estivéssemos fazendo uma nova instalação do SQL Server.
Nota: É muito importante que você sempre tenha um backup atualizado das bases model e msdb porque o model é o banco template, ou seja, todos os bancos são criados tendo como base as configurações desta base e o msdb é o banco onde ficam armazenadas as informações sobre os históricos de backup/restore, os jobs, os pacotes DTS, etc..
2) Para simular a corrupção do banco de dados master iremos excluir seus arquivos. Para tal, abra o Enterprise Manager ou o Query Analyzer (QA) e verifique a localização dos arquivos .mdf e .ldf desta base. Anote este caminho.

3) Feche o Enterprise Manager ou o QA (se estiverem abertos) e pare os serviços do SQL Server. Você pode fazer isto clicando com o botão direito no ícone do SQL Server Service Manager na systray (ao lado do relógio do Windows).

4) Estando parado o serviço do SQL Server, navegue até a localização identificada no passo 2, copie os arquivos master.mdf e masterlog.ldf para um local seguro (você pode precisar dele caso algum processo aqui dê errado) e exclua os arquivos originais.
5) Se tentar iniciar o serviço do SQL Server, clicando com o botão direito no ícone do SQL Server Service Manager na systray e selecionando MSSQLServer-Start, verá que o SQL Server não iniciará. Isto porque como dito anteriormente, o SQL Server precisa da master.
6) Neste ponto precisaremos fazer o rebuild da master utilizando o utilitário rebuildm. Porém, lembre-se que como descrito no artigo que descreve o bug deste utilitário, antes de iniciá-lo devemos copiar o conteúdo da pasta /x86/Data do CD do SQL Server para uma localização temporária no disco local. No meu caso, copiei para C:/Rebuild_master. Além disso, temos que garantir que os arquivos estão como read-write. Para isso, selecione todos os arquivos copiados, clique com o botão direito e selecione “Propriedades”, desmarque a opção read-only se a mesma estiver selecionada.
7) Agora já podemos fazer o rebuild da master. Para tal, navegue até o diretório apresentado na figura abaixo e execute o arquivo rebuildm.exe

Nota: Se você não tiver o arquivo rebuildm.exe copie-o do diretório /x86/binn do CD do SQL Server. Pode ser preciso copiar também outros arquivos.
8) Ao executar o utilitário, informe o nome do servidor SQL Server e o caminho dos arquivos copiados no passo 6. Clique no botão Rebuild, clique em Sim para fazer rebuild e overwrite das bases de sistema e aguarde alguns minutos.

9) Após a execução do utilitário rebuildm já é possível iniciar os serviços do SQL Server. No entando, se abrir o Enterprise Manager verá que todas as suas bases e logins sumiram. Para terem uma idéia do trabalho realizado pelo rebuildm, veja meu servidor antes e após sua execução.
Antes da execução do rebuildm: Tenho vários bancos de dados e logins.

Após a execução do rebuildm: Tenho apenas os bancos e logins de uma instalação original do SQL Server.

Na verdade isto acontece porque o rebuildm recria todas as bases de sistema (master, model, msdb, tempdb) como se estivéssemos instalando um novo SQL Server. A execução do rebuildm foi necessária porque não estávamos conseguindo nem iniciar o SQL Server e sem iniciar o SQL Server não poderíamos voltar o backup mais recente de nossa master original.
Agora que já estamos com o SQL Server no ar novamente, podemos partir para o próximo passo que é restaurar o backup da master original. Backup este que foi criado no passo 1.
10) Para restaurar o backup da master precisamos iniciar o SQL Server em single user mode. Para isto, pare o serviço do SQL Server (caso esteja iniciado). Abra uma janela DOS e navegue até o caminho onde está o arquivo sqlservr.exe – o executável do SQL Server. Execute este arquivo usando a opção -m como demonstrado abaixo. Se preferir, acrescente também a opção -c a qual faz o SQL Server iniciar mais rápido.

Nota: Para saber mais sobre as opções -m e -c, no Books Online do SQL Server pesquise por “Using Startup Options”.
11) Neste ponto, o SQL Server está iniciado em single user mode. Deixando esta janela aberta, abra o Enterprise Manager e restaure o backup da master da mesma forma que faria para restaurar o backup de qualquer outro banco de dados. Para simplificar, estarei restaurando o backup da master usando o utilitário osql.exe – um utilitário de linha de comando disponível em qualquer edição do SQL Server.
12) Para restaurar o backup da master, abra uma nova janela DOS e execute o utilitário osql.exe como demonstrado abaixo.

Surgirá uma mensagem dizendo que a master foi restaurada com sucesso e que o SQL Server foi shutdown.
Feche então todas as janelas DOS, inicie os serviços do SQL Server e abra o Enterprise Manager. Pronto, se tudo correu bem seu SQL Server estará restaurado como se nada estivesse acontecido.
Para recuperar seus jobs, DTS e históricos de backup/restore, não esqueça de restaurar também o backup do msdb. Se tiver feito alguma configuração especial em seu model, restaure-o também. O restor destas bases é feito como o restor de qualquer outra. Se preferir, pode usar o mesmo procedimento do passo 12.
Nota: Se você precisa restaurar o banco de dados master mas o seu SQL Server está iniciando corretamente, siga os procedimentos a partir do passo 10. Neste caso não é necessário executar o utilitário rebuildm e nem restaurar as bases msdb e model.
Qualquer dúvida ou problema com os procedimentos acima post uma mensagem em nosso fórum ou entre em contato conosco.
Um abraços a todos
Nilton Pinheiro

