Tenho um procedimento no banco de dados DB_A
que insere alguns dados na tabela Table_A
do mesmo banco de dados.
Este é um procedimento bem simples. No entanto, vejo que o processo que executa o procedimento fica em um estado SUSPENSO ou EM EXECUÇÃO por um tempo muito longo, mais de 30 minutos.
O mais estranho é que esse processo bloqueia outras duas tabelas em outro banco de dados que não estão relacionadas ao procedimento.
O procedimento é semelhante a este:
use DB_A;
go
create procedure dbo.spAddUrls @sURL nvarchar(500), @dtDate date
as
begin
set nocount on;
declare @nID_ bigint = dbo.ufnGetHash (@sURL);
begin try
begin tran
insert into dbo.TableA (ID, [URL], MapDate)
values (@nID_, @sURL, @dtDate);
commit transaction
end try
begin catch
declare @ErrorMsg varchar(1000) = error_message();
if @@trancount > 0
begin
rollback transaction;
raiserror (@ErrorMsg, 8, 1);
end
end catch
end
Mas vejo bloqueios exclusivos no banco de dados DB_B
em duas tabelas não relacionadas Table_B
e Table_C
.
Table_A
não DB_A
possui gatilhos ou chaves estrangeiras.
Por que as tabelas ficam DB_B
bloqueadas?
Nota: todas essas tabelas e o procedimento são parte da replicação. Mas não tenho certeza se estão relacionados.