Usuário com melhor resposta
trava o SQL Server em Update na tabela

Pergunta
-
Pessoal, estou com seguinte problema. Tenho a tabela de Serviços na Base que tem aproximadamente 300 registros armazenados que classifica as categorias de serviços prestados pela empresa. Quando é executo a instrução UPDATE servico SET servico_categoria = 'D' WHERE cod_Servico = 001 a atualização entra em loop indefinido travando o sistema. É necessário encerrar a execução para que os usuários voltem a utilizar o sistema. Usando a instrução SELECT * FROM servico WHERE cod_servico = 001 o retorno é em milisegundos. Estou tentando ainda identificar o porque a tabela não está permitindo fazendo a atualização no campo descrito, demorando tanto pra efetivar uma atualização tão simples. Gostaria de ter a ajuda dos colegas.
Agradeço desde já!
Respostas
-
Olá Jeferson,
Você ja tentou realizar esse update pelo SQL Server Management Studio e ver como se comporta? Se mesmo pelo Management Studio você pegar esse problema, execute esse comando select session_id,start_time,status,command,blocking_session_id,wait_type from sys.dm_exec_requests where command like '%UPDATE%' Assim você identificar de primeira mão o que está acontecendo nessa consulta.
Aconselho a criar a procedure sp_WhoIsActive http://sqlblog.com/blogs/adam_machanic/archive/2012/03/22/released-who-is-active-v11-11.aspx caso você não tenha e executa-la também no momento do update que está gerando o problema.
Se a resposta foi útil, classifique-a
Att,
Marcos Freccia [MTA|MCTS|MCITP|MCT SQL Server 2008]
Blog|Twitter
Assine também os feeds clicando aqui- Marcado como Resposta Jerfeson S. Barbosa quinta-feira, 17 de janeiro de 2013 18:00
Todas as Respostas
-
Bom dia Jerfeson,
O que parece é a transação de update está gerando um bloqueio. Por acaso vc está usando o controle de transações explicitas? (open tran/commit)? Verifique durante o momento que ele está "travado" se existe a ocorrencia de algum block.... utilize a sp_who2 ou sp_lock
At.
rafael -
Olá Jeferson,
Você ja tentou realizar esse update pelo SQL Server Management Studio e ver como se comporta? Se mesmo pelo Management Studio você pegar esse problema, execute esse comando select session_id,start_time,status,command,blocking_session_id,wait_type from sys.dm_exec_requests where command like '%UPDATE%' Assim você identificar de primeira mão o que está acontecendo nessa consulta.
Aconselho a criar a procedure sp_WhoIsActive http://sqlblog.com/blogs/adam_machanic/archive/2012/03/22/released-who-is-active-v11-11.aspx caso você não tenha e executa-la também no momento do update que está gerando o problema.
Se a resposta foi útil, classifique-a
Att,
Marcos Freccia [MTA|MCTS|MCITP|MCT SQL Server 2008]
Blog|Twitter
Assine também os feeds clicando aqui- Marcado como Resposta Jerfeson S. Barbosa quinta-feira, 17 de janeiro de 2013 18:00
-
-
-
Marcos, executei a atualização através do console do manager e não apresentou o problema. O SQL Server 2008 é usado no server de contigência e resolvi fazer o restore com intuito de analisar o ocorrido com mais profundidade evitando interrupções no sistema, pois ao executar a instrução no server de produção o mesmo trava a aplicação e nisso é preciso encerrar para que os usuários possam usar. Sobre o procedimento o mesmo não serve pra SQL Server 2000, apenas pra as versões 2005 e 2008. No 2000 usei o procedimento sp_who2 e analisei a coluna BlkBy para ver se existia algum processo em bloqueou. Não econtrado nenhum bloqueio decidi verificar no manager as atividades de processo e objetos em Locks/ Process ID e Locks/Objet e encontrei as informações descritas na imagem. Gostaria de uma explicação para entender melhor. Esses spid na imagem 01 é referente a prováveis problemas e os objetos na imagem 02 das tabelas ctf e lta é algum problema a ser resolvido??
- Editado Jerfeson S. Barbosa sexta-feira, 18 de janeiro de 2013 14:13
-