Executar uma consulta (query) em uma tabela bloqueada (lock)


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.

 

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.