O artigo sugere dicas importantes para evitar Deadlocks em SQL Servers
Apesar SQL Server tem testemunhado uma enorme evolução nos últimos dois anos, os usuários ainda enfrentam regularmente a situação de impasses. Idealmente, um servidor de banco de dados deve ser capaz de recuperar várias solicitações, mas geralmente resulta em bloqueios. Os conflitos onde um processo aguarda a liberação de outro recurso são chamados de blocos. E depois há impasses.
Imagine uma situação em que uma pessoa está pedindo à segunda para liberar um recurso e a segunda está esperando que a primeira libere. Como resultado, ambos estão presos em uma situação de impasse. Nenhum processo pode continuar, pois ambos estão bloqueados e exigem que o outro libere o recurso ou bloqueio.
Enquanto trabalhava com SQL servers, os impasses são bastante comuns e podem atrapalhar todo o processo. Não é possível evitar totalmente os impasses, mas certamente pode-se minimizar a chance de criar um impasse.
Problema de impasse

Deve-se observar que os deadlocks afetam diretamente o desempenho e podem interromper o processamento do banco de dados.
1. Mantenha o mesmo pedido
Impasses (deadlocks) são inevitáveis se os recursos não forem processados em uma ordem bem definida. Para minimizar impasses, todas as transações simultâneas devem acessar os objetos em uma ordem bem definida. Os administradores de banco de dados (DBAs) devem criar um conjunto claro de regras para o acesso aos objetos do banco de dados. Normalmente, os monitores de bloqueio realizam verificações de impasse e, quando detectam um, selecionam uma vítima e revertem sua transação. Dessa forma, todos os bloqueios são liberados e as sessões anteriores podem continuar o processo. As vítimas de impasse são escolhidas com base na prioridade de impasse definida pelo servidor ou no custo de reversão.
2. Restrição durante a Transação
Você pode restringir os usuários a inserir qualquer tipo de dados quando a transação estiver sendo processada e você pode atualizar os dados antes da transação para evitar impasses. Além disso, tente manter a interação do usuário em níveis mínimos porque isso afeta a velocidade. Idealmente, as transações devem ser curtas e rápidas para evitar impasses. Um aplicativo deve ser projetado de forma a capturar os bloqueios no menor tempo necessário e liberá-los o mais rápido possível.
3. Dica NOLOCK
Quando alguém executa uma consulta em uma tabela no nível de isolamento padrão do SQL, a tabela é bloqueada e as próximas consultas precisam aguardar a liberação. A dica NOLOCK é útil em tais situações, pois permite substituir o bloqueio da tabela e outras consultas são de fácil acesso.
4. Use conexões vinculadas
Se o mesmo aplicativo puder abrir duas ou mais conexões que possam cooperar entre si, isso não criará impasses. É por isso que é aconselhável usar conexões Bound.
Os impasses não são o único problema que você provavelmente enfrentará ao trabalhar em um SQL Server base de dados. Na verdade, incidentes de corrupção de sql são mais propensos a causar-lhe sofrimento. Para evitar um cenário de perda de dados, invista em uma poderosa ferramenta de recuperação como DataNumen SQL Recovery.
Introdução do autor:
Victor Simon é um especialista em recuperação de dados em DataNumen, Inc., líder mundial em tecnologias de recuperação de dados, incluindo recuperação mdb e produtos de software de recuperação SQL. Para mais informações visite https://www.datanumen.com/