Os locks em tabelas são normais e é mecanismo usado pelos SGBDs (sistema de banco de dados) para protegerem a integridade dos dados durante as transações. Para executar uma consulta (query) em uma tabela que esteja bloqueada por outro processo, é possível utilizar a opção NOLOCK, que permite que a consulta seja executada sem aguardar a liberação da tabela bloqueada. No SQL Server, o comando para utilizar essa opção é o seguinte:
SELECT * FROM nome_da_tabela WITH (NOLOCK) WHERE condição;
Substitua “nome_da_tabela” pelo nome da tabela que você deseja consultar e “condição” pela condição que deve ser atendida para retornar os resultados desejados. É importante lembrar que o uso da opção NOLOCK pode resultar em dados inconsistentes ou imprecisos, caso haja transações concorrentes atualizando a tabela. Portanto, é recomendado usar essa opção com cuidado e apenas em situações específicas em que a performance é mais importante do que a precisão dos dados.
Uma outra opção é utilizar a opção SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED antes da consulta, que tem o mesmo efeito de permitir que a consulta seja executada sem esperar a liberação do bloqueio. O comando seria assim:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT * FROM nome_da_tabela WHERE condição;
Substitua “nome_da_tabela” pelo nome da tabela que você deseja consultar e “condição” pela condição que deve ser atendida para retornar os resultados desejados. Como mencionado anteriormente, é importante lembrar que o uso dessas opções pode resultar em dados inconsistentes ou imprecisos, caso haja transações concorrentes atualizando a tabela. Portanto, é recomendado usar com cuidado e apenas em situações específicas em que a performance é mais importante do que a precisão dos dados.