Eu configurei meus bancos de dados para que sempre que um procedimento for bloqueado por mais de 45 segundos, o banco de dados notifique o e-mail do DBA. É uma prática ruim configurar uma maneira de matar automaticamente o processo que está bloqueando? Estou assumindo que sim; no entanto, esperar até um horário de folga do DBA pode acessar um computador e corrigir a alteração também parece problemático. Existe uma maneira melhor de lidar com os processos de bloqueio?
relate perguntas
-
Melhores práticas para conectar bancos de dados que estão em diferentes regiões geográficas
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Quanto "Padding" coloco em meus índices?
-
Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?
-
Downgrade do SQL Server 2008 para 2005
Para pegar carona em @AaronBertrand, matar um processo pode causar inconsistência de transação e isso significaria que você está jogando fora a conformidade ACID. Por que não registrar primeiro todas as consultas que levam mais de 45 segundos e, em seguida, alterar o design do código com base nisso?
Há muito que você pode fazer para resolver problemas de bloqueio/bloqueio alterando os níveis de isolamento, como READ UNCOMMITED ou usando isolamento instantâneo (o isolamento instantâneo é preferível, pois há muitas advertências com READ UNCOMMITED, mas não ajudará no caso de escritores bloqueio de escritores).
Verificação de saída:
Vídeo de introdução de isolamento de instantâneo MCM
Bom começo na solução de problemas de bloqueio e bloqueio