/* 
  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...
 
 
 
Great! Quando bate o desespero é meio complicado... Já me perdi com isso.
ResponderExcluirTenso rsss
ResponderExcluirHaja coração! rsrs
ResponderExcluirVelho esse post foi minha salvação!
ResponderExcluirAcabei de resolver esse erro aqui na empresa!!
Obrigado Felipe.