SQL Server: Rebuild no database master sem backup – Parte 1

SQL Server: Rebuild no database master sem backup – Parte 1

Tempo de leitura: 5 minutos

Fala pessoal, neste artigo venho trazer o primeiro assunto de 2021.

Cenário

Enfrentei um problema onde o serviço do SQL Server de um ambiente não iniciava. Ao tentar iniciar o serviço no SQL Configuration Manager, um erro bem genérico era gerado. Ao investigar o Event View do Windows, percebi o seguinte erro:

Erro relacionado ao serviço do SQL Server

 

Ainda verificando os logs, identifiquei:

 

Investigando melhor, notei que mesmo com as atualizações do Windows Update desativadas no servidor, por algum motivo que ainda estou verificando, o SQL Server acabou sendo atualizado pelo windows update, e no meio do procedimento houve um erro ao tentar executar o script: ‘msdb110_upgrade.sql’ resultando na corrupção do database master. 

Até ai um problema bem dos grandes. A primeira solução na cabeça foi pensar na restaurar o banco de dados master dos meus backups e resolver o problema, correto? É o velho ditado: Só jesus salva, DBA tem que ter Backup”, o problema é que eu não tinha nenhum backup. Não vou entrar em detalhes pelo motivo de não ter o backup. Afinal, toda empresa tem suas particularidades.

E aí como faz? Ambiente indisponível, sem backup… vamos as propostas de soluções:

  1. Tentar usar o repair (reparador de instalação) do próprio instalador do SQL Server, afim de tentar recuperar o banco de dados master. “Tentativa que não deu certo”.
  2. Tentar usar o banco de dados master que é disponibilizado como template da instalação. Dica do nosso amigo #GustavoLarocca, consultor na power tuning. Em alguns cenários, esses templates podem salvar sua vida. No SQL Server 2019, ele se encontra nessa pasta. Em versões anteriores, o destino dessa pasta muda.
  3. Reinstalar o SQL Server do zero, e Attach os .MDFs e LDFs. Proposta de solução que daria certo, entretanto, bastante demorada.
  4. Por último, tentar realizar um tipo de manobra para tentar recuperar o banco de dados master sem ter que exercer o passo 3.

Por fim, consegui resolver com o passo 4, entretanto, existe alguns detalhes para este procedimento.

Observações:

  • O procedimento a seguir apaga todos os dados originais registrados na base de dados master (linkedservers, usuários, etc).
  • Não depende de CU (cumulative update)  para reconstrução.

Laboratório

Neste laboratório, propositalmente corrompi o database master para tentar simular o problema. Não consegui simular com o mesmo erro, porém o cenário é bem parecido, ou seja, não consigo iniciar os meus serviços do SQL Server por motivos que envolve o banco de dados interno master, e não tenho backup. Apenas lembrando que a versão no qual ocorreu este cenário, foi o SQL Server 2019.

Como pré-requisito, você irá precisar da mídia de instalação da sua versão montada no sistema operacional. No meu caso, SQL Server 2019 Developer.

Mídia de instalação SQL Server 2019

Com o SQL Server parado, vamos executar os seguintes passos:

  1. Monte a mídia de instalação na versão do SQL Server que já está instalado.
  2. Após montado, navegue pelo cmd em modo administrador até a unidade montada.

Chegando ao diretório da imagem, execute o seguinte comando abaixo:

Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER /SQLSYSADMINACCOUNTS=DESKTOP-L0NAOVQ\felip /SAPWD=123 /SQLCOLLATION=SQL_Latin1_General_CP1_CI_AI

Parâmetros:

ACTION: Ação a ser executada.

INSTANCENAME: Nome da instancia que já existia.

SQLSYSADMINACOUNT: Importante observar que se o computador estiver em um domínio, mesmo que local, o usuário novo necessita ser dentro deste domínio.

SAPWD: Nova senha para o usuário definido.

SQLCOLLATION: COLLATION padrão do SQL Server.

 

3. Após o comando ter sido executado, inicie o serviço do SQL Server normalmente.

 

4. Logue no SQL Server:

 

 

5. Desvantagens do processo:

  • A. O banco de dados master é recuperado, entretanto, é necessário attachar os MDF’s e LDF’s.
  • Os usuários necessitam ser reconfigurados após o procedimento.

6. Vantagens do processo:

  • Não é necessário reinstalar o SQL Server.
  • O trabalho de recuperação do ambiente é mais rápido.

Na parte 2 do artigo, irei mostrar o processo de restaurar a base de dados master e alguns assuntos correlacionados sobre a importância das sysmtemdatabases.

Referências:

Deixe seu comentário. Até a próxima.

 

0 0 votes
Article Rating
Subscribe
Notify of
guest

4 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Rodrigo Martin
Rodrigo Martin
3 anos atrás

Top!!! Obrigado por compartilhar.

Luiz Vitor França Lima
3 anos atrás

Post excelente!!! Certamente vai ajudar muitos desesperados quando o SQL Server estiver com esse problema hehehe. Mandou bem man!!! =)