Erro em atualização INPlace SQL Server
Falaaa galerinha,
Estamos de volta depois de um tempo sem postar!!!
Hoje falaremos sobre um caso no qual precisei atualizar o SQL Server de um cliente da versão 2017 para 2019 InPlace.
## ALERTA DE SPOILER ## : Ocorreram fortes emoções durante a execução deste trabalho..
O Cliente estava em posse da mídia de instalação da versão 2019 e solicitou que o processo fosse feito InPlace (ou seja, a atualização foi feita a partir do próprio servidor através dos arquivos de instalação do SQL Server).
Já foi relatado em outros posts que esse tipo de prática é um tanto quanto arriscado, visto que estaremos tratando da atualização direta dos binários do SQL Server, se algum arquivo estiver danificado, corrompido na máquina ou se algo não estiver dentro dos padrões de instalação durante o processo de atualização, voltar ao estado original pode ser irreversível.
Por isso é sempre importante quando forem realizar esse tipo de trabalho que seja feito um Backup de toda a sua infraestrutura (VM,Discos,etc) antes de executar os procedimentos (Caso contrário poderá ser bem arriscado executar a atualização e isso pode colocar em risco a integridade operacional do seu ambiente SQL Server).
Segue link de um post envolvendo atualização InPlace que postei há algum tempo atrás :
https://gustavolarocca.com.br/como-corrigir-erro-no-pacote-vs-shell-em-atualizacao-in-place/
Vamos para o nosso caso de hoje :
Em posse da mídia de instalação do SQL Server 2019, iniciamos o processo de atualização.
Seguimos com as etapas normalmente até chegar na instalação.
Durante a instalação ficou cerca de 50 minutos nessa tela e não progredia mais, até que a seguinte mensagem apareceu.
E na sequência a instalação foi abortada automaticamente.
Na sequência, tentei executar um REPAIR da instalação, conforme estava sendo indicado no próprio relatório de erros da instalação.
No entanto, tivemos o mesmo problema ao final do processo.
Partimos então para a análise dos Logs de eventos e o próprio ERRORLOG do SQL Server.
No Log de eventos do Windows, o problema estava indicando problemas no banco “master” e como sugestão de reparo estava indicando realizar a recriação dele.
Porém, antes decidi analisar o ERRORLOG do SQL Server, antes de tomar medidas mais drásticas.
Encontrei essa mensagem, indicando que o usuário interno ##MS_SSISServerCleanupJobLogin##, do banco SSISDB não estava sendo encontrado ou estava sem permissão.
Essa já era uma boa pista sobre a causa raiz do problema, decidi então tentar criar este usuário, para isso, entrei no Configuration Manager e habilitei nos parâmetros de inicialização da Engine a Trace Flag -T902 (Que permite iniciar o serviço do SQL com várias restrições e em modo de segurança).
Dentro do SQL Server, efetuei a criação do Login e foi feito o mapeamento do usuário ##MS_SSISServerCleanupJobLogin## ao banco SSISDB.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
CREATE LOGIN [##MS_SSISServerCleanupJobLogin##] WITH PASSWORD = N'XXXXXXXXXXX', DEFAULT_DATABASE = [master], DEFAULT_LANGUAGE = [us_english], CHECK_EXPIRATION = OFF, CHECK_POLICY = OFF; GO USE SSISDB; GO ALTER USER [##MS_SSISServerCleanupJobUser##] WITH LOGIN = [##MS_SSISServerCleanupJobLogin##]; |
Na sequência, foi alterado o estado do banco do SSISDB para MULTI_USER.
1 |
ALTER DATABASE SSISDB SET MULTI_USER |
Feito este procedimento, realizei o reparo da instalação novamente e fiz a retirada da -TF902 nos parâmetros de inicialização da instância.
Desta vez, deu tudo certo!!
SQL Server atualizado com sucesso =)
Pois é, mas afinal, porque isso aconteceu?
Boa pergunta, o problema pode ter ocorrido por diversas razões, ao certo não sei dizer, mas acredito que a causa mais provável seja ter ocorrido uma exclusão acidental do usuário ##MS_SSISServerCleanupJobLogin## em algum momento que gerou todo este problema.
Fortes emoções nessa atualização, mas no final graças a Deus deu tudo certo!! ?
É isso aii pessoal, espero que tenham gostado do artigo.
Um grande abraço!!
Gustavo Larocca
Consultor SQL Server
Um comentário
Tooop de mais! Mais uma vez os ótimos posts do Gustavo Larocca salvando. Me ajudou em um caso real de um cliente.