none
Status KILLED/ROLLBACK RRS feed

  • Pergunta

  • Pessoal, tenho um servidor que depois que derrubo um processo ele sempre fica com o status KILLED/ROLLBACK

    Aparentemente isso não impacta na minha performance, mas também este status só sai quando reinicio a instance caso o contrario ele fica por dias assim.

    Minha duvida é... Realmente isso não atrapalha minha performance? por que isso ocorre?

    

    sexta-feira, 20 de janeiro de 2017 11:29

Respostas

  • Renata,

    Bom dia!

    Qual é o processo?

    Quando você executa uma consulta, o SQL faz todo processo antes em memória, por exemplo, quando você executa um Insert os dados não são inseridos diretamente no disco, as páginas que você alterou são modificadas em memória e só são persistidas depois. O chamado WAL (Write-ahead logging). Esse tópico descreve isso:

    https://technet.microsoft.com/en-us/library/ms186259(v=sql.105).aspx

    Assim, quando você tenta finalizar um processo, o SQL consegue voltar ao estado anterior da execução, no entanto, ás vezes, ele pode levar a mesma quantidade de tempo para realizar esse Rollback. Esse é um motivo, e impacta um pouco no seu ambiente.

    Outro motivo, pode ser por exemplo: Quando você executa um processo “não-SQL”, como abrir um arquivo winrar através do comando xp_cmdshell  sem especificar parâmetros, esse processo fica aberto no Windows, e consequentemente, o processo no SQL também fica ativo (xp_cmdshell), quando você tenta matar esse processo no SQL ele fica em “rollback infinito”, para resolver esse caso, você teria que, no Windows, pelo gerenciador de tarefas por exemplo, matar o processo do winrar, e o processo no SQL seria automaticamente finalizado. Esse exemplo não impacta muito no SQL.


    sexta-feira, 20 de janeiro de 2017 12:01

Todas as Respostas

  • Renata,

    Bom dia!

    Qual é o processo?

    Quando você executa uma consulta, o SQL faz todo processo antes em memória, por exemplo, quando você executa um Insert os dados não são inseridos diretamente no disco, as páginas que você alterou são modificadas em memória e só são persistidas depois. O chamado WAL (Write-ahead logging). Esse tópico descreve isso:

    https://technet.microsoft.com/en-us/library/ms186259(v=sql.105).aspx

    Assim, quando você tenta finalizar um processo, o SQL consegue voltar ao estado anterior da execução, no entanto, ás vezes, ele pode levar a mesma quantidade de tempo para realizar esse Rollback. Esse é um motivo, e impacta um pouco no seu ambiente.

    Outro motivo, pode ser por exemplo: Quando você executa um processo “não-SQL”, como abrir um arquivo winrar através do comando xp_cmdshell  sem especificar parâmetros, esse processo fica aberto no Windows, e consequentemente, o processo no SQL também fica ativo (xp_cmdshell), quando você tenta matar esse processo no SQL ele fica em “rollback infinito”, para resolver esse caso, você teria que, no Windows, pelo gerenciador de tarefas por exemplo, matar o processo do winrar, e o processo no SQL seria automaticamente finalizado. Esse exemplo não impacta muito no SQL.


    sexta-feira, 20 de janeiro de 2017 12:01
  • Olá,

    De alguma forma vai impactar no consumo de recursos do servidor, pois de qualquer forma ele está rodando. Esse comando geralmente é executado quando interrompemos a execução de uma transaction que estava rodando, nesse momento, o SQL Server inicia o Rollback das modificações até então realizadas naquela transaction.

    Em que momento isso roda, toda vez?

    Pode ser algum JOB que esteja agendado e por algum motivo dá algum erro e tenta fazer rollback.

    Para ter certeza de qual script, procedure, etc que está rodando, abra o Activity Monitor, encontre esse processo, clique com o botão direito sobre ele e vá em Details, lá você poderá visualizar qual é o script em questão.

    Espero ter ajudado!

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    sexta-feira, 20 de janeiro de 2017 12:01
  • Como o Mailson disse, isso parece um acesso feito fora do SQL Server.

    Valide sua rotina para ver se ela faz algo do tipo.


    Fabrício França Lima MCITP - SQL Server Database Administrator Trabalho com SQL Server desde 2006 Treinamento DBA ONLINE: http://www.fabriciolima.net/blog/cursos-online/treinamento-tarefas-do-dia-a-dia-de-um-dba-online/

    segunda-feira, 23 de janeiro de 2017 10:56
  • Bom dia,

    Devido a falta de interação do autor dessa pergunta,

    essa thread está sendo fechada. Caso o problema ainda

    esteja ocorrendo, favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 23 de janeiro de 2017 11:43