TroubleShooting - Msg 952, Level 16, State 1 Database 'MinhaBase' is in transition. Try the statement later

/*
  Olá amigos!
 
  Ja falei que a vida de DBAs é cheia de aventura? Essa semana o caso abaixo elevou o nível da minha adrenalina. Sem aviso e no meio do dia uma base de produção critica ficou inacessível sem razão aparente.

      Ao tentar acessa-la com o Use Database recebia a seguinte mensagem
*/   

Msg 952, Level 16, State 1, Line 1
Database 'MinhaBase' is in transition. Try the statement later.

-- ou na tradução do SQL

Msg 952, Level 16, State 1, Line 1
Banco de dados 'MinhaBase' em transição. Tente a instrução mais tarde.  


/*
      E nunca mais voltava!
     
      Após alguns minutos de desespero, descobrimos que o erro foi causado por um comando ALTER DATABASE MinhaBase SET OFFLINE. ( meu colega DBA que originou o comando jura de pé junto que só tinha acabado de fazer um backup e eu acredito nele)
      Como o banco estava cheio de usuários o SQL estava aguardando que todos se desconectassem da base para concluir o comando e ao mesmo tempo bloqueou todos os novos usuários de se conectarem naquela base.

      Para solucionar tivemos que encontrar o session id do comando com a sys.dm_exec_requests
*/   

select session_id, command, wait_resource 
from sys.dm_exec_requests
WHERE
      command = 'ALTER DATABASE'
     
-- No wait_ressource está a indicação do banco de dados que está sendo alvo do comando
-- E  matar o session id que obtemos
     
kill 59

-- E tudo volta ao normal como mágica.... ufa...

4 comentários:

  1. Great! Quando bate o desespero é meio complicado... Já me perdi com isso.

    ResponderExcluir
  2. Velho esse post foi minha salvação!
    Acabei de resolver esse erro aqui na empresa!!
    Obrigado Felipe.

    ResponderExcluir