none
Transaction rollback in progress RRS feed

  • Pergunta

  • Pessoal

           Veja o problema que estou tendo em alguns momento aqui, onde o processo entra na situação abaixo e gostaria de saberia se este problema eu só poderia resolver reiniciando o serviço do SQL Server ou teria uma outra maneira, pois no momento estou utilizando o SQL Server 2014.

    kill 152 with statusonly 

    SPID 152: transaction rollback in progress. Estimated rollback completion: 0%. Estimated time remaining: 0 seconds.

    terça-feira, 27 de agosto de 2019 20:42

Todas as Respostas

  • Amigo, não sou especialista em SQL, mas trabalhei um bom tempo com esse banco, em relação a esse processo de rollback, pelo que conheço, apenas reiniciando você interrompe, mas pode ser um problema fazer isso, você corre o risco até do banco entrar em modo de "restauração"!
    Aconselho aguardar e monitorar o banco para identificar qual script esta causando esse rollback.
    Caso seja alguma SQL de insert ou delete que trabalha com muitos registros, recomendo refazer o script fazendo o commit ou rollback em pequenos lotes.
    terça-feira, 27 de agosto de 2019 20:55
  • Prezado Neibala,

    é como o amigo já falou ai . 

    Realmente o recomendado é esperar. Normalmente o processo não demora muito , mas, já vi situações em que demorou até 'dias'. 

    Por experiência minha agora....

    Já tive que reiniciar o serviço do Sql Server em uma situação semelhante. Infelizmente.


    Jefferson Clyton Pereira da Silva - [MCSA | MCP | MCTS | MTA | Analista de Banco de Dados - Sql Server e Oracle ]

    terça-feira, 27 de agosto de 2019 22:04
  • Neibala,

    Já tentou identificar o que esta sendo processado por esta query, tente utilizar o comando DBCC InputBuffer():

    DBCC InputBuffer(152)
    Go

    Neste outro exemplo, você vai poder identificar o que esta sendo processando em sua instância ou servidor:

    SELECT sess.session_id, 
                sess.login_time, 
                sess.original_login_name, 
                sess.login_name, 
                sess.host_name, 
                sess.program_name 
     FROM sys.dm_exec_sessions sess Inner JOIN sys.dm_exec_connections conn 
                                                ON sess.session_id = conn.session_id

    Já estou outro exemplo, poderá lhe apresentar um detalhamento maior do que esta sendo processado, inclusive o que esta sendo processado:

    SELECT 
      DES.SESSION_ID,
      DES.CPU_TIME,
      DES.READS,
      DES.WRITES,
      DES.LOGICAL_READS,
      DES.ROW_COUNT,
      DER.SESSION_ID,
      DES.STATUS,
      DES.HOST_NAME,
      DES.PROGRAM_NAME,
      DES.LOGIN_NAME,
      DES.ORIGINAL_LOGIN_NAME, 
      DEC.CLIENT_NET_ADDRESS,
      DEC.AUTH_SCHEME,
      DEC.NET_TRANSPORT,
      SUBSTRING(T.[TEXT], DER.[STATEMENT_START_OFFSET] / 2, 
    	COALESCE(NULLIF(DER.[STATEMENT_END_OFFSET], - 1) / 2, 2147483647)) AS COMANDO
    FROM
     SYS.DM_EXEC_SESSIONS AS DES 
      INNER JOIN SYS.DM_EXEC_REQUESTS DER
       ON DER.BLOCKING_SESSION_ID = DES.SESSION_ID
      INNER JOIN SYS.DM_EXEC_CONNECTIONS DEC  
       ON DEC.SESSION_ID = DES.SESSION_ID
      INNER JOIN SYS.DM_EXEC_REQUESTS DER2
       ON DER2.SESSION_ID = DES.SESSION_ID
       CROSS APPLY SYS.DM_EXEC_SQL_TEXT(DER.[SQL_HANDLE]) AS T
    GO

    Destaco que estes exemplos de Código não são de minha autoria, muito menos possuo direitos autorais sobre eles, os quais foram obtidos através de pesquisas na internet, acesso a documentações oficiais Microsoft, bem como, resultado de respostas de posts publicadas aqui nos fóruns.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    quarta-feira, 28 de agosto de 2019 01:21
  • Pessoal

          Não sei se alguém algum dia percebeu ou tentou algo neste sentido, ouvi alguns comentários que se fizer um backup e após terminar ele poderia estar liberando está transação que está pendente ou algo com um shrink com a opção de truncateonly, alguém lembra de algo neste sentido ?

    quarta-feira, 28 de agosto de 2019 15:41
  • Pessoal

          Não sei se alguém algum dia percebeu ou tentou algo neste sentido, ouvi alguns comentários que se fizer um backup e após terminar ele poderia estar liberando está transação que está pendente ou algo com um shrink com a opção de truncateonly, alguém lembra de algo neste sentido ?

    Neibala,

    Sinceramente falando eu nunca ouviu falar sobre isso, mas não posso dizer que isso seja loucura, realizei diversas pesquisas na internet, a princípio não identifiquei nada afirmando, inclusive fiz a simulando deixando uma transação em processamento enquanto o backup era executado e nada mudou, sabendo que o SQL Server permite a execução de backup e somente acrescenta no arquivo o que estava sendo processado a partir do momento que o backup é iniciado.



    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 28 de agosto de 2019 23:30