Inquiridor
Transaction rollback in progress

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.
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. -
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 ]
- Sugerido como Resposta Jefferson Silva DBA terça-feira, 27 de agosto de 2019 22:05
-
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]
- Editado Junior Galvão - MVPMVP quarta-feira, 28 de agosto de 2019 01:24
-
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 ?
-
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]